1 // RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - \ 2 // RUN: | FileCheck %s 3 // RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - \ 4 // RUN: | FileCheck %s 5 // RUN: %clang_cc1 %s -triple aarch64-windows -fms-extensions -emit-llvm -o - \ 6 // RUN: | FileCheck %s 7 8 // Check that the first finally block passes the enclosing function's frame 9 // pointer to the second finally block, instead of generating it via localaddr. 10 11 // CHECK-LABEL: define internal void @"?fin$0@0@main@@"({{i8( zeroext)?}} %abnormal_termination, i8* %frame_pointer) 12 // CHECK: call void @"?fin$1@0@main@@"({{i8( zeroext)?}} 0, i8* %frame_pointer) 13 int 14 main() { 15 int Check = 0; 16 __try { 17 Check = 3; 18 } __finally { 19 __try { 20 Check += 2; 21 } __finally { 22 Check += 4; 23 } 24 } 25 return Check; 26 } 27