brintos

brintos / llvm-project-archived public Read only

0
0
Text · 780 B · 24ad901 Raw
38 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s2struct X {3  X();4  ~X();5};6 7struct Y {8  Y();9  ~Y();10};11 12// CHECK-LABEL: define{{.*}} void @_Z1fiPPKc(13void f(int argc, const char* argv[]) {14  // CHECK: call void @_ZN1XC1Ev15  X x;16  // CHECK: call ptr @llvm.stacksave.p0(17  const char *argv2[argc];18  // CHECK: call void @_ZN1YC1Ev19  Y y;20  for (int i = 0; i != argc; ++i)21    argv2[i] = argv[i];22 23  // CHECK: call void @_ZN1YD1Ev24  // CHECK: call void @llvm.stackrestore.p025  // CHECK: call void @_ZN1XD1Ev26  // CHECK: ret void27}28 29namespace PR11744 {30  // Make sure this doesn't crash; there was a use-after-free issue31  // for this testcase.32  template<typename T> int f(int n) {33    T arr[3][n];34    return 3;35  }36  int test = f<int>(0);37}38