| // MIPS assembler uses the label prefix `$anon.` for local anonymous variables | |
| // other architectures (including ARM and x86-64) use the prefix `.Lanon.` | |
| // Hexagon uses `.string` instead of `.asciz` for null-terminated strings | |
| //@ only-linux | |
| //@ assembly-output: emit-asm | |
| //@ compile-flags: --crate-type=lib -Copt-level=3 -Cllvm-args=-enable-global-merge=0 | |
| //@ edition: 2024 | |
| use std::ffi::CStr; | |
| // CHECK: .section .rodata.str1.{{[12]}},"aMS" | |
| // CHECK: {{(\.L|\$)}}anon.{{.+}}: | |
| // CHECK-NEXT: .{{asciz|string}} "foo" | |
| #[unsafe(no_mangle)] | |
| static CSTR: &[u8; 4] = b"foo\0"; | |
| // CHECK-NOT: .section | |
| // CHECK: {{(\.L|\$)}}anon.{{.+}}: | |
| // CHECK-NEXT: .{{asciz|string}} "bar" | |
| #[unsafe(no_mangle)] | |
| pub fn cstr() -> &'static CStr { | |
| c"bar" | |
| } | |
| // CHECK-NOT: .section | |
| // CHECK: {{(\.L|\$)}}anon.{{.+}}: | |
| // CHECK-NEXT: .{{asciz|string}} "baz" | |
| #[unsafe(no_mangle)] | |
| pub fn manual_cstr() -> &'static str { | |
| "baz\0" | |
| } |