blob: 94f0dda5392f2ec1433604bddaeeebcf4b87456d [file] [log] [blame]
// RUN: %clang_cc1 -triple aarch64-none-linux-android21 -fclangir -emit-cir -pic-is-pie -pic-level 1 %s -o %t1.cir
// RUN: FileCheck --input-file=%t1.cir %s -check-prefix=CIR
// RUN: %clang_cc1 -triple aarch64-none-linux-android21 -fclangir -emit-llvm -pic-is-pie -pic-level 1 %s -o %t.ll
// RUN: FileCheck --input-file=%t.ll %s -check-prefix=LLVM
void foo(int i) {
}
int main() {
foo(2);
return 0;
}
// CIR: cir.func @foo(%arg0: !s32i
// CIR-NEXT: [[TMP0:%.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}
// CIR-NEXT: cir.store %arg0, [[TMP0]] : !s32i, !cir.ptr<!s32i>
// CIR-NEXT: cir.return
// CIR: cir.func no_proto @main() -> !s32i
// CIR: [[TMP1:%.*]] = cir.const #cir.int<2> : !s32i
// CIR: cir.call @foo([[TMP1]]) : (!s32i) -> ()
// LLVM: define dso_local void @foo(i32 [[TMP3:%.*]])
// LLVM: [[ARG_STACK:%.*]] = alloca i32, i64 1, align 4,
// LLVM: store i32 [[TMP3]], ptr [[ARG_STACK]], align 4
// LLVM: ret void,
// LLVM: define dso_local i32 @main()
// LLVM: [[TMP4:%.*]] = alloca i32, i64 1, align 4,
// LLVM: call void @foo(i32 2),
// LLVM: store i32 0, ptr [[TMP4]], align 4
// LLVM: [[RET_VAL:%.*]] = load i32, ptr [[TMP4]], align 4
// LLVM: ret i32 [[RET_VAL]],