xref: /aosp_15_r20/external/llvm/test/CodeGen/Generic/2014-02-05-OpaqueConstants.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; Test that opaque constants are not creating an infinite DAGCombine loop
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s
3*9880d681SAndroid Build Coastguard Worker; XFAIL: r600, xcore
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker@a = common global i32* null, align 8
6*9880d681SAndroid Build Coastguard Worker@c = common global i32 0, align 4
7*9880d681SAndroid Build Coastguard Worker@b = common global i32* null, align 8
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind ssp uwtable
10*9880d681SAndroid Build Coastguard Workerdefine void @fn() {
11*9880d681SAndroid Build Coastguard Worker  store i32* inttoptr (i64 68719476735 to i32*), i32** @a, align 8
12*9880d681SAndroid Build Coastguard Worker  %1 = load i32, i32* @c, align 4
13*9880d681SAndroid Build Coastguard Worker  %2 = sext i32 %1 to i64
14*9880d681SAndroid Build Coastguard Worker  %3 = lshr i64 %2, 12
15*9880d681SAndroid Build Coastguard Worker  %4 = and i64 %3, 68719476735
16*9880d681SAndroid Build Coastguard Worker  %5 = getelementptr inbounds i32, i32* null, i64 %4
17*9880d681SAndroid Build Coastguard Worker  store i32* %5, i32** @b, align 8
18*9880d681SAndroid Build Coastguard Worker  ret void
19*9880d681SAndroid Build Coastguard Worker}
20