27 lines · c
1// RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - \2// RUN: | FileCheck %s3// RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - \4// RUN: | FileCheck %s5// RUN: %clang_cc1 %s -triple aarch64-windows -fms-extensions -emit-llvm -o - \6// RUN: | FileCheck %s7 8// Check that the first finally block passes the enclosing function's frame9// pointer to the second finally block, instead of generating it via localaddr.10 11// CHECK-LABEL: define internal void @"?fin$0@0@main@@"({{i8 noundef( zeroext)?}} %abnormal_termination, ptr noundef %frame_pointer)12// CHECK: call void @"?fin$1@0@main@@"({{i8 noundef( zeroext)?}} 0, ptr noundef %frame_pointer)13int14main(void) {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