Files
rust/tests/codegen-llvm
Jonathan Brouwer ae95a559ad Rollup merge of #153238 - shua:lldb-rcstr, r=davidtwco
debuginfo: slices are DW_TAG_array_type's

Rust debuginfo for unsized structs with embedded slice types is lacking, and it makes it difficult for debuggers to correctly print types like `Rc<str>` (eg rust-lang/rust#114195). Specifically, these three structs would have essentially the same debug info (modulo some names):
```rust
struct Foo { a: u32, s: str } // unsized
struct Bar { a: u32, s: [u8] } // unsized
struct Baz { a: u32, s: u8 }
```

This changes how the compiler generates debuginfo in this case, and I used existing compilers (gcc, clang) handling of C flexible member arrays as a reference.
2026-05-15 18:16:30 +02:00
..
2025-11-08 10:57:35 -07:00
2026-04-25 14:57:23 -07:00
2026-04-20 19:15:52 +02:00
2026-01-26 13:43:06 -06:00
2025-08-15 16:42:21 +00:00
2026-05-04 15:35:40 +02:00
2026-04-14 03:25:02 +05:30
2026-02-24 08:33:15 +00:00
2026-04-25 14:57:23 -07:00
2026-03-31 09:06:31 +02:00

The files here use the LLVM FileCheck framework, documented at https://llvm.org/docs/CommandGuide/FileCheck.html.

One extension worth noting is the use of revisions as custom prefixes for FileCheck. If your codegen test has different behavior based on the chosen target or different compiler flags that you want to exercise, you can use a revisions annotation, like so:

// revisions: aaa bbb
// [bbb] compile-flags: --flags-for-bbb

After specifying those variations, you can write different expected, or explicitly unexpected output by using <prefix>-SAME: and <prefix>-NOT:, like so:

// CHECK: expected code
// aaa-SAME: emitted-only-for-aaa
// aaa-NOT:                        emitted-only-for-bbb
// bbb-NOT:  emitted-only-for-aaa
// bbb-SAME:                       emitted-only-for-bbb