// RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - \ // RUN: | FileCheck %s // RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - \ // RUN: | FileCheck %s // RUN: %clang_cc1 %s -triple aarch64-windows -fms-extensions -emit-llvm -o - \ // RUN: | FileCheck %s // Check that the first finally block passes the enclosing function's frame // pointer to the second finally block, instead of generating it via localaddr. // CHECK-LABEL: define internal void @"?fin$0@0@main@@"({{i8( zeroext)?}} %abnormal_termination, i8* %frame_pointer) // CHECK: call void @"?fin$1@0@main@@"({{i8( zeroext)?}} 0, i8* %frame_pointer) int main() { int Check = 0; __try { Check = 3; } __finally { __try { Check += 2; } __finally { Check += 4; } } return Check; }