rust/tests/debuginfo
Jacob Pratt 8951c74e2a
Rollup merge of #138285 - beetrees:repr128-stable, r=traviscross,bjorn3
Stabilize `repr128`

## Stabilisation report

The `repr128` feature ([tracking issue](https://github.com/rust-lang/rust/issues/56071)) allows the use of `#[repr(u128)]` and `#[repr(i128)]` on enums in the same way that other primitive representations such as `#[repr(u64)]` can be used. For example:

```rust
#[repr(u128)]
enum Foo {
    One = 1,
    Two,
    Big = u128::MAX,
}

#[repr(i128)]
enum Bar {
    HasThing(u16) = 42,
    HasSomethingElse(i64) = u64::MAX as i128 + 1,
    HasNothing,
}
```

This is the final part of adding 128-bit integers to Rust ([RFC 1504](https://rust-lang.github.io/rfcs/1504-int128.html)); all other parts of 128-bit integer support were stabilised in #49101 back in 2018.

From a design perspective, `#[repr(u128)]`/`#[repr(i128)]` function like `#[repr(u64)]`/`#[repr(i64)]` but for 128-bit integers instead of 64-bit integers. The only differences are:

- FFI safety: as `u128`/`i128` are not currently considered FFI safe, neither are `#[repr(u128)]`/`#[repr(i128)]` enums (I discovered this wasn't the case while drafting this stabilisation report, so I have submitted #138282 to fix this).
- Debug info: while none of the major debuggers currently support 128-bit integers, as of LLVM 20 `rustc` will emit valid debuginfo for both DWARF and PDB (PDB makes use of the same natvis that is also used for all enums with fields, whereas DWARF has native support).

Tests for `#[repr(u128)]`/`#[repr(i128)]` enums include:
- [ui/enum-discriminant/repr128.rs](385970f0c1/tests/ui/enum-discriminant/repr128.rs): checks that 128-bit enum discriminants have the correct values.
- [debuginfo/msvc-pretty-enums.rs](385970f0c1/tests/debuginfo/msvc-pretty-enums.rs): checks the PDB debuginfo is correct.
- [run-make/repr128-dwarf](385970f0c1/tests/run-make/repr128-dwarf/rmake.rs): checks the DWARF debuginfo is correct.

Stabilising this feature does not require any changes to the Rust Reference as [the documentation on primitive representations](https://doc.rust-lang.org/nightly/reference/type-layout.html#r-layout.repr.primitive.intro) already includes `u128` and `i128`.

Closes #56071
Closes https://github.com/rust-lang/reference/issues/1368

r? lang

```@rustbot``` label +I-lang-nominated +T-lang
2025-05-29 04:50:46 +02:00
..
auxiliary Reformat Python code with ruff 2024-12-04 23:03:44 +01:00
associated-types.rs Fixup tests 2024-08-18 17:41:01 -04:00
basic-types-globals-metadata.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
basic-types-globals.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
basic-types-metadata.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
basic-types-mut-globals.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
basic-types.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
borrowed-basic.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
borrowed-c-style-enum.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
borrowed-enum.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
borrowed-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
borrowed-tuple.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
borrowed-unique-basic.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
box.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
boxed-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
by-value-non-immediate-argument.rs ci: move tests from x86_64-gnu-llvm-19 job to aarch64 2025-05-26 22:27:20 +02:00
by-value-self-argument-in-trait-impl.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
c-style-enum-in-composite.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
c-style-enum.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
captured-fields-1.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
captured-fields-2.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
closure-in-generic-function.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
closures.rs Add and improve debuginfo tests for Windows 2025-01-13 09:38:04 +01:00
collapse-debuginfo-external-attr.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
collapse-debuginfo-external-flag-overriden-by-attr.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
collapse-debuginfo-external-flag.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
collapse-debuginfo-in-non-collapse-macro.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
collapse-debuginfo-no-attr.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
collapse-debuginfo-static-external.rs Add debuginfo tests for collapse_debuginfo for statics. 2024-06-13 16:04:31 +02:00
collapse-debuginfo-static.rs Add debuginfo tests for collapse_debuginfo for statics. 2024-06-13 16:04:31 +02:00
collapse-debuginfo-with-attr-flag.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
collapse-debuginfo-with-attr.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
collapse-debuginfo-with-yes-flag.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
constant-debug-locs.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
constant-in-match-pattern.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
constant-ordering-prologue.rs Update debuginfo test for newer lldb 2024-10-21 11:40:12 -07:00
coroutine-closure.rs replace //@ compile-flags: --edition with //@ edition 2025-04-10 09:56:37 +02:00
coroutine-locals.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
coroutine-objects.rs Delete redundant gdb-version requirements and related comments 2024-08-18 16:58:25 -04:00
cross-crate-spans.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
cross-crate-type-uniquing.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
destructured-fn-argument.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
destructured-for-loop-variable.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
destructured-local.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
drop-locations.rs tests: refine disable reason for tests/debuginfo/drop-locations.rs 2025-04-17 18:52:57 +08:00
dummy_span.rs Add a test. 2024-08-19 17:10:43 -07:00
duration-type.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
embedded-visualizer-point.natvis Move /src/test to /tests 2023-01-11 09:32:08 +00:00
embedded-visualizer-point.py Reformat Python code with ruff 2024-12-04 23:03:44 +01:00
embedded-visualizer.natvis Move /src/test to /tests 2023-01-11 09:32:08 +00:00
embedded-visualizer.py Reformat Python code with ruff 2024-12-04 23:03:44 +01:00
embedded-visualizer.rs Delete redundant gdb-version requirements and related comments 2024-08-18 16:58:25 -04:00
empty-string.rs fix string and tuple struct formatting 2025-02-12 01:30:09 -06:00
enum-thinlto.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
evec-in-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
extern-c-fn.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
f16-natvis.rs Add Natvis visualiser and debuginfo tests for f16 2024-07-09 03:47:50 +01:00
fixed-sized-array.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
fn_ptr.rs Add and improve debuginfo tests for Windows 2025-01-13 09:38:04 +01:00
function-arg-initialization.rs Delete gdbg commands 2024-08-18 12:39:06 -04:00
function-arguments.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
function-call.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
function-names.rs Begin to implement type system layer of unsafe binders 2024-12-22 21:57:57 +00:00
function-prologue-stepping-regular.rs Enable debuginfo tests that have been temporarily disabled for years 2024-08-11 14:20:15 -04:00
gdb-char.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
gdb-pretty-struct-and-enums.rs Delete redundant gdb-version requirements and related comments 2024-08-18 16:58:25 -04:00
generic-enum-with-different-disr-sizes.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
generic-function.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
generic-functions-nested.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
generic-method-on-generic-struct.rs Fixup tests 2024-08-18 17:41:01 -04:00
generic-static-method-on-struct-and-enum.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
generic-struct-style-enum.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
generic-struct.rs Fixup tests 2024-08-18 17:41:01 -04:00
generic-tuple-style-enum.rs Delete lldbr annotations 2024-08-18 16:59:58 -04:00
include_string.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
issue-7712.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
issue-12886.rs Enable more debuginfo tests on Windows 2024-08-16 21:14:45 -04:00
issue-13213.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
issue-14411.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
issue-22656.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
issue-57822.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-in-for-loop.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-in-if-let.rs Add and improve debuginfo tests for Windows 2025-01-13 09:38:04 +01:00
lexical-scope-in-if.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-in-match.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-in-parameterless-closure.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
lexical-scope-in-stack-closure.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-in-unconditional-loop.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-in-unique-closure.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-in-while.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scope-with-macro.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
lexical-scopes-in-block-expression.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
limited-debuginfo.rs Replace gdbr with gdbg 2024-08-18 12:39:07 -04:00
macro-stepping.inc Move /src/test to /tests 2023-01-11 09:32:08 +00:00
macro-stepping.rs Enable more debuginfo tests on Windows 2024-08-16 21:14:45 -04:00
marker-types.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
method-on-enum.rs Upgrade CI's mingw-w64 toolchain 2024-09-01 12:37:26 +02:00
method-on-generic-struct.rs Fixup tests 2024-08-18 17:41:01 -04:00
method-on-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
method-on-trait.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
method-on-tuple-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
msvc-pretty-enums.rs Stabilise repr128 2025-05-28 15:14:34 +01:00
msvc-scalarpair-params.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
multi-byte-chars.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
multi-cgu.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
multiline-calls.rs Use the fn_span when emitting function calls for better debug info. 2025-05-22 14:06:24 -07:00
multiple-functions-equal-var-names.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
multiple-functions.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
mutable-locs.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
mutex.rs Move some things to std::sync::poison and reexport them in std::sync 2025-01-02 15:21:41 +03:00
name-shadowing-and-scope-nesting.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
no_mangle-info.rs Fix remaining LLDB commands. 2024-03-15 20:30:45 +01:00
numeric-types.rs Mark numeric-types.rs as 64-bit only for now 2024-11-17 04:16:59 +08:00
option-like-enum.rs Make option-like-enum.rs UB-free and portable 2024-08-27 19:12:14 -04:00
packed-struct-with-destructor.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
packed-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
path.rs Add rust-lldb pretty printing for Path and PathBuf 2024-03-29 18:02:26 -06:00
pretty-huge-vec.rs Fix test hangs on AIX 2025-03-04 10:06:28 -05:00
pretty-slices.rs Replace gdbr with gdbg 2024-08-18 12:39:07 -04:00
pretty-std-collections-hash.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
pretty-std-collections.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
pretty-std.rs fix string and tuple struct formatting 2025-02-12 01:30:09 -06:00
pretty-uninitialized-vec.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
range-types.rs Update cdb annotations for range-types.rs with cdb 10.0.26100.2161 2024-11-17 00:42:30 +08:00
rc_arc.rs Delete redundant gdb-version requirements and related comments 2024-08-18 16:58:25 -04:00
recursive-enum.rs fix(debuginfo): avoid overflow when handling expanding recursive type 2025-03-17 18:33:40 +08:00
recursive-struct.rs Delete redundant gdb-version requirements and related comments 2024-08-18 16:58:25 -04:00
recursive-type-with-gat.rs (re)move fixed crash tests 2025-03-17 19:43:31 +08:00
reference-debuginfo.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
regression-bad-location-list-67992.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
result-types.rs [AUTO_GENERATED] Migrate compiletest to use ui_test-style //@ directives 2024-02-22 16:04:04 +00:00
rwlock-read.rs Move some things to std::sync::poison and reexport them in std::sync 2025-01-02 15:21:41 +03:00
rwlock-write.rs Move some things to std::sync::poison and reexport them in std::sync 2025-01-02 15:21:41 +03:00
self-in-default-method.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
self-in-generic-default-method.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
shadowed-argument.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
shadowed-variable.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
should-fail.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
simd.rs Ban non-array SIMD 2024-09-09 19:39:43 -07:00
simple-lexical-scope.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
simple-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
simple-tuple.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
skip_second_statement.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
skip_second_statement_collapse.rs debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
static-method-on-struct-and-enum.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
step-into-match.rs [win][arm64] Disable various DebugInfo tests that don't work on Arm64 Windows 2025-05-07 10:49:54 -07:00
strings-and-strs.rs Rollup merge of #135354 - Walnut356:msvc_lldb, r=wesleywiser 2025-02-23 02:44:16 -05:00
struct-in-enum.rs Delete redundant gdb-version requirements and related comments 2024-08-18 16:58:25 -04:00
struct-in-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
struct-namespace.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
struct-style-enum.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
struct-with-destructor.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
text-to-include-1.txt Move /src/test to /tests 2023-01-11 09:32:08 +00:00
text-to-include-2.txt Move /src/test to /tests 2023-01-11 09:32:08 +00:00
text-to-include-3.txt Move /src/test to /tests 2023-01-11 09:32:08 +00:00
thread-names.rs Enable more debuginfo tests on Windows 2024-08-16 21:14:45 -04:00
thread.rs Revert "Remove the Arc rt::init allocation for thread info" 2025-01-14 13:37:25 +01:00
trait-pointers.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
tuple-in-struct.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
tuple-in-tuple.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
tuple-struct.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
tuple-style-enum.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
type-names.cdb.js Move /src/test to /tests 2023-01-11 09:32:08 +00:00
type-names.rs [win][arm64] Disable various DebugInfo tests that don't work on Arm64 Windows 2025-05-07 10:49:54 -07:00
union-smoke.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
unique-enum.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
unit-type.rs Update cdb annotations for unit-type.rs with cdb 10.0.26100.2161 2024-11-17 00:50:54 +08:00
unreachable-locals.rs Delete min-lldb-version: 310 2024-08-18 16:58:26 -04:00
unsized.rs Delete tuple unsizing 2025-02-27 10:26:33 +00:00
var-captured-in-nested-closure.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
var-captured-in-sendable-closure.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
var-captured-in-stack-closure.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
vec-slices.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
vec.rs Convert lldbg- to lldb- 2024-08-18 17:00:33 -04:00
zst-interferes-with-prologue.rs Don't leave debug locations for constants sitting on the builder indefinitely. 2024-09-06 23:12:18 +00:00