brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · afffaf5 Raw
40 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm %s -o - | FileCheck %s2 3// PR46784namespace test0 {5  // test1 should be compmiled to be a varargs function in the IR even6  // though there is no way to do a va_begin.  Otherwise, the optimizer7  // will warn about 'dropped arguments' at the call site.8 9  // CHECK-LABEL: define{{.*}} i32 @_ZN5test05test1Ez(...)10  int test1(...) {11    return -1;12  }13 14  // CHECK: call noundef i32 (...) @_ZN5test05test1Ez(i32 noundef 0)15  void test() {16    test1(0);17  }18}19 20namespace test1 {21  struct A {22    int x;23    int y;24  };25 26  void foo(...);27 28  void test() {29    A x;30    foo(x);31  }32  // CHECK-LABEL:    define{{.*}} void @_ZN5test14testEv()33  // CHECK:      [[X:%.*]] = alloca [[A:%.*]], align 434  // CHECK-NEXT: [[TMP:%.*]] = alloca [[A]], align 435  // CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[TMP]], ptr align 4 [[X]], i64 8, i1 false)36  // CHECK-NEXT: [[T1:%.*]] = load i64, ptr [[TMP]], align 437  // CHECK-NEXT: call void (...) @_ZN5test13fooEz(i64 [[T1]])38  // CHECK-NEXT: ret void39}40