brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 8e12a22 Raw
48 lines · plain
1; RUN: llvm-diff %s %s2 3; An initializer that has a GEP instruction in it won't match itself in4; llvm-diff unless the a deep comparison is done on the initializer.5 6@gv1 = external dso_local global [28 x i16], align 167@gv2 = private unnamed_addr constant [2 x ptr] [ptr @gv1, ptr poison], align 168 9define void @foo() {10  %1 = getelementptr [2 x ptr], ptr @gv2, i64 0, i64 undef11  ret void12}13 14; A named structure may be renamed when the right module is read. This is due15; to the LLParser being different between the left and right modules, and the16; context renaming one.17 18%struct.ty1 = type { i16, i16 }19 20@gv3 = internal global [1 x %struct.ty1] [%struct.ty1 { i16 928, i16 0 }], align 1621 22define void @bar() {23  %1 = getelementptr [1 x %struct.ty1], ptr @gv3, i64 0, i64 undef24  ret void25}26 27; An initializer may reference the variable it's initializing via bitcast /28; GEP. Check that it doesn't cause an infinite loop.29 30%struct.mutex = type { %struct.list_head }31%struct.list_head = type { ptr, ptr }32 33@vmx_l1d_flush_mutex = internal global %struct.mutex { %struct.list_head { ptr getelementptr (i8, ptr @vmx_l1d_flush_mutex, i64 16), ptr getelementptr (i8, ptr @vmx_l1d_flush_mutex, i64 16) } }, align 834 35define internal i32 @qux() {36  call void undef(ptr @vmx_l1d_flush_mutex)37  ret i32 undef38}39 40; An initializer could use itself as part of the initialization.41 42@kvm_debugfs_entries = internal global %struct.list_head { ptr @kvm_debugfs_entries, ptr @kvm_debugfs_entries }, align 843 44define i64 @mux() {45  %1 = load ptr, ptr @kvm_debugfs_entries, align 846  ret i64 undef47}48