xref: /aosp_15_r20/external/llvm/test/CodeGen/Generic/invalid-memcpy.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; This testcase is invalid (the alignment specified for memcpy is
4*9880d681SAndroid Build Coastguard Worker; greater than the alignment guaranteed for Qux or C.0.1173), but it
5*9880d681SAndroid Build Coastguard Worker; should compile, not crash the code generator.
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker@C.0.1173 = external constant [33 x i8]
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdefine void @Bork() {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  %Qux = alloca [33 x i8]
12*9880d681SAndroid Build Coastguard Worker  %Qux1 = bitcast [33 x i8]* %Qux to i8*
13*9880d681SAndroid Build Coastguard Worker  call void @llvm.memcpy.p0i8.p0i8.i64(i8* %Qux1, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @C.0.1173, i32 0, i32 0), i64 33, i32 8, i1 false)
14*9880d681SAndroid Build Coastguard Worker  ret void
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
18