| // RUN: %clang_cc1 -triple x86_64-linux-gnu -gkey-instructions %s -debug-info-kind=line-tables-only -emit-llvm -o - -fexceptions -fcxx-exceptions \ |
| // RUN: | FileCheck %s |
| |
| void except() { |
| // FIXME(OCH): Should `store i32 32, ptr %exception` be key? |
| throw 32; |
| } |
| |
| void attempt() { |
| try { except(); } |
| // CHECK: catch: |
| // CHECK: %4 = call ptr @__cxa_begin_catch(ptr %exn) |
| // CHECK: %5 = load i32{{.*}}, !dbg [[G1R2:!.*]] |
| // CHECK: store i32 %5, ptr %e{{.*}}, !dbg [[G1R1:!.*]] |
| // CHECK: call void @__cxa_end_catch() |
| catch (int e) { } |
| |
| // CHECK: ret{{.*}}, !dbg [[RET:!.*]] |
| } |
| |
| // CHECK: [[G1R2]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 2) |
| // CHECK: [[G1R1]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 1) |
| // CHECK: [[RET]] = !DILocation({{.*}}, atomGroup: 2, atomRank: 1) |