mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-30 14:01:51 +00:00
Rollup merge of #125963 - workingjubilee:remove-hashes-from-codegen-tests, r=Mark-Simulacrum
Remove hard-coded hashes from codegen tests This removes hard-coded hashes from the codegen and assembly tests. These use FileCheck, which supports eliding part of the pattern being matched, including by capturing it as a pattern parameter for later matching-on. This is much more appropriate than asking contributors to engage with deliberately-opaque identifier schemes. In order to reduce the likelihood of error, every hash-coded segment I've touched now expects a certain length. This correctly represents these cases, as our hash outputs have a predetermined amount of entropy attached to them. This is not done for the UI test suite as those are comparatively easy to simply `--bless`, whereas that would be inappropriate for codegen tests. It is also not done for debuginfo tests as those tests do not support such elision in a correct and useful way.
This commit is contained in:
commit
3720757d21
@ -25,9 +25,9 @@ global_asm!("movl ${}, %ecx", const 5, options(att_syntax));
|
||||
global_asm!("call {}", sym my_func);
|
||||
// CHECK: lea rax, [rip + MY_STATIC]
|
||||
global_asm!("lea rax, [rip + {}]", sym MY_STATIC);
|
||||
// CHECK: call _RNvCsddMtV7nAi4C_10global_asm6foobar
|
||||
// CHECK: call _RNvC[[CRATE_IDENT:[a-zA-Z0-9]{12}]]_10global_asm6foobar
|
||||
global_asm!("call {}", sym foobar);
|
||||
// CHECK: _RNvCsddMtV7nAi4C_10global_asm6foobar:
|
||||
// CHECK: _RNvC[[CRATE_IDENT]]_10global_asm6foobar:
|
||||
fn foobar() {
|
||||
loop {}
|
||||
}
|
||||
|
@ -9,11 +9,11 @@
|
||||
// CHECK: @STATIC = {{.*}}, align 4
|
||||
|
||||
// This checks the constants from inline_enum_const
|
||||
// CHECK: @alloc_af1f8e8e6f4b341431a1d405e652df2d = {{.*}}, align 2
|
||||
// CHECK: @alloc_[[INLINE_ENUM_HASH:[a-f0-9]{32}]] = {{.*}}, align 2
|
||||
|
||||
// This checks the constants from {low,high}_align_const, they share the same
|
||||
// constant, but the alignment differs, so the higher one should be used
|
||||
// CHECK: [[LOW_HIGH:@alloc_[a-f0-9]+]] = {{.*}}, align 4
|
||||
// CHECK: [[LOW_HIGH:@alloc_[a-f0-9]{32}]] = {{.*}}, align 4
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
// repr(i16) is required for the {low,high}_align_const test
|
||||
|
@ -15,9 +15,9 @@ fn foo<T>() {}
|
||||
|
||||
pub fn bar() {
|
||||
// CHECK: call pattern_type_symbols::foo::<u32>
|
||||
// CHECK: call void @_RINvCs3QvG2ESzx2Q_20pattern_type_symbols3foomEB2_
|
||||
// CHECK: call void @_RINvC[[CRATE_IDENT:[a-zA-Z0-9]{12}]]_20pattern_type_symbols3foomEB2_
|
||||
foo::<u32>();
|
||||
// CHECK: call pattern_type_symbols::foo::<(u32, [(); 0], [(); 999999999], [(); true])>
|
||||
// CHECK: call void @_RINvCs3QvG2ESzx2Q_20pattern_type_symbols3fooTmAum0_Aum3b9ac9ff_Aub1_EEB2_
|
||||
// CHECK: call void @_RINvC[[CRATE_IDENT]]_20pattern_type_symbols3fooTmAum0_Aum3b9ac9ff_Aub1_EEB2_
|
||||
foo::<NanoU32>();
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ fn taking_u(u: &dyn U) -> i32 {
|
||||
}
|
||||
|
||||
pub fn taking_v(v: &dyn V) -> i32 {
|
||||
// CHECK: @llvm.type.checked.load({{.*}}, i32 24, metadata !"NtCs64ITQYi9761_28virtual_function_elimination1V")
|
||||
// CHECK: @llvm.type.checked.load({{.*}}, i32 24, metadata !"NtC[[CRATE_IDENT:[a-zA-Z0-9]{12}]]_28virtual_function_elimination1V")
|
||||
v.public_function()
|
||||
}
|
||||
|
||||
@ -96,5 +96,5 @@ pub fn main() {
|
||||
// CHECK: ![[TYPE0]] = !{i64 0, !"[[MANGLED_TYPE0]]"}
|
||||
// CHECK: ![[VCALL_VIS0]] = !{i64 2}
|
||||
// CHECK: ![[TYPE1]] = !{i64 0, !"[[MANGLED_TYPE1]]"}
|
||||
// CHECK: ![[TYPE2]] = !{i64 0, !"NtCs64ITQYi9761_28virtual_function_elimination1V"}
|
||||
// CHECK: ![[TYPE2]] = !{i64 0, !"NtC[[CRATE_IDENT]]_28virtual_function_elimination1V"}
|
||||
// CHECK: ![[VCALL_VIS2]] = !{i64 1}
|
||||
|
Loading…
Reference in New Issue
Block a user