161dd0603SAlex Richardson// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py 261dd0603SAlex Richardson// Example input for update_cc_test_checks 3*b16a3b4fSNikita Popov// RUN: %clang_cc1 -no-opaque-pointers -triple=x86_64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s 461dd0603SAlex Richardson 561dd0603SAlex Richardson// CHECK-LABEL: @test( 661dd0603SAlex Richardson// CHECK-NEXT: entry: 761dd0603SAlex Richardson// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8 861dd0603SAlex Richardson// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4 961dd0603SAlex Richardson// CHECK-NEXT: store i64 [[A:%.*]], i64* [[A_ADDR]], align 8 1061dd0603SAlex Richardson// CHECK-NEXT: store i32 [[B:%.*]], i32* [[B_ADDR]], align 4 11e5b87727SSanjay Patel// CHECK-NEXT: [[TMP0:%.*]] = load i64, i64* [[A_ADDR]], align 8 12e5b87727SSanjay Patel// CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[B_ADDR]], align 4 13e5b87727SSanjay Patel// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[TMP1]] to i64 14e5b87727SSanjay Patel// CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[TMP0]], [[CONV]] 1561dd0603SAlex Richardson// CHECK-NEXT: ret i64 [[ADD]] 1661dd0603SAlex Richardson// 1761dd0603SAlex Richardsonlong test(long a, int b) { 1861dd0603SAlex Richardson return a + b; 1961dd0603SAlex Richardson} 2061dd0603SAlex Richardson 2161dd0603SAlex Richardson// A function with a mangled name 2261dd0603SAlex Richardson// CHECK-LABEL: @_Z4testlii( 2361dd0603SAlex Richardson// CHECK-NEXT: entry: 2461dd0603SAlex Richardson// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8 2561dd0603SAlex Richardson// CHECK-NEXT: [[B_ADDR:%.*]] = alloca i32, align 4 2661dd0603SAlex Richardson// CHECK-NEXT: [[C_ADDR:%.*]] = alloca i32, align 4 2761dd0603SAlex Richardson// CHECK-NEXT: store i64 [[A:%.*]], i64* [[A_ADDR]], align 8 2861dd0603SAlex Richardson// CHECK-NEXT: store i32 [[B:%.*]], i32* [[B_ADDR]], align 4 2961dd0603SAlex Richardson// CHECK-NEXT: store i32 [[C:%.*]], i32* [[C_ADDR]], align 4 30e5b87727SSanjay Patel// CHECK-NEXT: [[TMP0:%.*]] = load i64, i64* [[A_ADDR]], align 8 31e5b87727SSanjay Patel// CHECK-NEXT: [[TMP1:%.*]] = load i32, i32* [[B_ADDR]], align 4 32e5b87727SSanjay Patel// CHECK-NEXT: [[CONV:%.*]] = sext i32 [[TMP1]] to i64 33e5b87727SSanjay Patel// CHECK-NEXT: [[ADD:%.*]] = add nsw i64 [[TMP0]], [[CONV]] 34e5b87727SSanjay Patel// CHECK-NEXT: [[TMP2:%.*]] = load i32, i32* [[C_ADDR]], align 4 35e5b87727SSanjay Patel// CHECK-NEXT: [[CONV1:%.*]] = sext i32 [[TMP2]] to i64 3661dd0603SAlex Richardson// CHECK-NEXT: [[ADD2:%.*]] = add nsw i64 [[ADD]], [[CONV1]] 3761dd0603SAlex Richardson// CHECK-NEXT: ret i64 [[ADD2]] 3861dd0603SAlex Richardson// 3961dd0603SAlex Richardson__attribute__((overloadable)) long test(long a, int b, int c) { 4061dd0603SAlex Richardson return a + b + c; 4161dd0603SAlex Richardson} 42