Skip to content

Tighten str-to-string-128690.rsCHECK{,-NOT}s to make it less likely to incorrectly fail with symbol name mangling #137491

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 24, 2025

Conversation

jieyouxu
Copy link
Member

The invoke to match on to CHECK or CHECK-NOT (latest master) looks like

  %_0.i.i.i.i.i.i.i.i.i.i.i.i.i1.i = invoke noundef zeroext i1 @"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17ha18033e7fb4f14fcE"(ptr noalias noundef nonnull readonly align 1 %_3.val.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 noundef %_3.val1.i.i.i.i.i.i.i.i.i.i.i.i.i, ptr noalias noundef nonnull align 8 dereferenceable(64) %formatter.i)
          to label %bb1.i unwind label %cleanup.i, !noalias !80

in the local .ll output.

This test incorrectly failed in #137483 (comment) due to

// CHECK-NOT: {{(call|invoke).*}}fmt

matching against the unrelated call

tail call void @_RNvNtCseLfmtnDCoTB_5alloc7raw_vec12handle_error

It's not pretty by any means, but...

r? @saethlin

…kely to collide with symbol name mangling
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 23, 2025
@jieyouxu jieyouxu changed the title Tighten str-to-string-128690.rs CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling Tighten str-to-string-128690.rsCHECK{,-NOT}s to make it less likely to incorrectly fail with symbol name mangling Feb 23, 2025
@saethlin
Copy link
Member

Sure. The test is still gross, but hopefully less flaky.

(all such tests that just CHECK-NOT one thing are poorly written IMO)

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Feb 23, 2025

📌 Commit e15ce94 has been approved by saethlin

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 23, 2025
jhpratt added a commit to jhpratt/rust that referenced this pull request Feb 24, 2025
…hlin

Tighten `str-to-string-128690.rs``CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling

The `invoke` to match on to `CHECK` or `CHECK-NOT` (latest master) looks like

```llvm
  %_0.i.i.i.i.i.i.i.i.i.i.i.i.i1.i = invoke noundef zeroext i1 `@"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17ha18033e7fb4f14fcE"(ptr` noalias noundef nonnull readonly align 1 %_3.val.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 noundef %_3.val1.i.i.i.i.i.i.i.i.i.i.i.i.i, ptr noalias noundef nonnull align 8 dereferenceable(64) %formatter.i)
          to label %bb1.i unwind label %cleanup.i, !noalias !80
```

in the local `.ll` output.

This test incorrectly failed in rust-lang#137483 (comment) due to

```
// CHECK-NOT: {{(call|invoke).*}}fmt
```

matching against the unrelated call

```llvm
tail call void `@_RNvNtCseLfmtnDCoTB_5alloc7raw_vec12handle_error`
```

It's not pretty by any means, but...

r? `@saethlin`
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 24, 2025
Rollup of 9 pull requests

Successful merges:

 - rust-lang#131282 (std: detect stack overflows in TLS destructors on UNIX)
 - rust-lang#136610 (Allow `IndexSlice` to be indexed by ranges.)
 - rust-lang#136991 ([rustdoc] Add new setting to wrap source code lines when too long)
 - rust-lang#137393 (Stabilize `unbounded_shifts`)
 - rust-lang#137482 (Windows: use existing wrappers in `File::open_native`)
 - rust-lang#137484 (Fix documentation for unstable sort on slice)
 - rust-lang#137491 (Tighten `str-to-string-128690.rs``CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling)
 - rust-lang#137495 (Added into_value function to ControlFlow<T, T>)
 - rust-lang#137501 (Move `impl` blocks out of `rustc_middle/src/mir/syntax.rs`)

Failed merges:

 - rust-lang#137489 (remove `#[rustc_intrinsic_must_be_overridde]`)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 24, 2025
Rollup of 10 pull requests

Successful merges:

 - rust-lang#136610 (Allow `IndexSlice` to be indexed by ranges.)
 - rust-lang#136991 ([rustdoc] Add new setting to wrap source code lines when too long)
 - rust-lang#137061 (Unstable `gen_future` Feature Tracking  )
 - rust-lang#137393 (Stabilize `unbounded_shifts`)
 - rust-lang#137482 (Windows: use existing wrappers in `File::open_native`)
 - rust-lang#137484 (Fix documentation for unstable sort on slice)
 - rust-lang#137491 (Tighten `str-to-string-128690.rs``CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling)
 - rust-lang#137495 (Added into_value function to ControlFlow<T, T>)
 - rust-lang#137501 (Move `impl` blocks out of `rustc_middle/src/mir/syntax.rs`)
 - rust-lang#137505 (Add a span to `CompilerBuiltinsCannotCall`)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit e66fcc3 into rust-lang:master Feb 24, 2025
6 checks passed
@rustbot rustbot added this to the 1.87.0 milestone Feb 24, 2025
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 24, 2025
Rollup merge of rust-lang#137491 - jieyouxu:mango-less-likely, r=saethlin

Tighten `str-to-string-128690.rs``CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling

The `invoke` to match on to `CHECK` or `CHECK-NOT` (latest master) looks like

```llvm
  %_0.i.i.i.i.i.i.i.i.i.i.i.i.i1.i = invoke noundef zeroext i1 ``@"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17ha18033e7fb4f14fcE"(ptr`` noalias noundef nonnull readonly align 1 %_3.val.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 noundef %_3.val1.i.i.i.i.i.i.i.i.i.i.i.i.i, ptr noalias noundef nonnull align 8 dereferenceable(64) %formatter.i)
          to label %bb1.i unwind label %cleanup.i, !noalias !80
```

in the local `.ll` output.

This test incorrectly failed in rust-lang#137483 (comment) due to

```
// CHECK-NOT: {{(call|invoke).*}}fmt
```

matching against the unrelated call

```llvm
tail call void ``@_RNvNtCseLfmtnDCoTB_5alloc7raw_vec12handle_error``
```

It's not pretty by any means, but...

r? ``@saethlin``
@jieyouxu jieyouxu deleted the mango-less-likely branch February 24, 2025 15:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants