172236372SRichard Smith // RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple | FileCheck %s 22cbd1f6cSRichard Smith // RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple -std=c++98 -fexceptions -fcxx-exceptions | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-EH 372236372SRichard Smith 472236372SRichard Smith struct A { 572236372SRichard Smith A(); 672236372SRichard Smith ~A(); 772236372SRichard Smith }; 872236372SRichard Smith 972236372SRichard Smith struct B { 1072236372SRichard Smith B(A = A()); 1172236372SRichard Smith ~B(); 1272236372SRichard Smith }; 1372236372SRichard Smith 1472236372SRichard Smith void f(); 15922f2aa9SRafael Espindola // CHECK-LABEL: define {{(dso_local )?}}void @_Z1gv() g()1672236372SRichard Smithvoid g() { 1772236372SRichard Smith // CHECK: br label %[[LOOP:.*]] 1872236372SRichard Smith 1972236372SRichard Smith // [[LOOP]]: 20*69cd776eSCJ Johnson // CHECK: {{call|invoke}} {{.*}} @_ZN1AC1Ev({{.*}} [[TEMPORARY:%.*]]) 2172236372SRichard Smith // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD:.*]] 22*69cd776eSCJ Johnson // CHECK: {{call|invoke}} {{.*}} @_ZN1BC1E1A({{.*}} [[TEMPORARY]]) 2372236372SRichard Smith // CHECK-EH: unwind label %[[A_AND_PARTIAL_ARRAY_LPAD:.*]] 24*69cd776eSCJ Johnson // CHECK: {{call|invoke}} {{.*}} @_ZN1AD1Ev({{.*}} [[TEMPORARY]]) 2572236372SRichard Smith // CHECK-EH: unwind label %[[PARTIAL_ARRAY_LPAD]] 2672236372SRichard Smith // CHECK: getelementptr {{.*}}, i{{[0-9]*}} 1 2772236372SRichard Smith // CHECK: icmp eq 2872236372SRichard Smith // CHECK: br i1 {{.*}} label %[[LOOP]] 2972236372SRichard Smith B b[5]; 3072236372SRichard Smith 3172236372SRichard Smith // CHECK: {{call|invoke}} void @_Z1fv() 3272236372SRichard Smith f(); 3372236372SRichard Smith 3472236372SRichard Smith // CHECK-NOT: @_ZN1AD1Ev( 3572236372SRichard Smith // CHECK: {{call|invoke}} {{.*}} @_ZN1BD1Ev( 3672236372SRichard Smith } 37