| // RUN: %clang_cc1 -gkey-instructions -gno-column-info -x c++ %s -debug-info-kind=line-tables-only -emit-llvm -o - -triple x86_64-unknown-linux \ |
| // RUN: | FileCheck %s --implicit-check-not atomGroup --implicit-check-not atomRank --check-prefixes=CHECK,CHECK-CXX |
| |
| // RUN: %clang_cc1 -gkey-instructions -gno-column-info -x c %s -debug-info-kind=line-tables-only -emit-llvm -o - -triple x86_64-unknown-linux \ |
| // RUN: | FileCheck %s --implicit-check-not atomGroup --implicit-check-not atomRank --check-prefixes=CHECK,CHECK-C |
| |
| typedef struct { |
| void* a; |
| void* b; |
| } Struct; |
| Struct get(); |
| |
| void test() { |
| // CHECK: %1 = extractvalue { ptr, ptr } %call, 0, !dbg [[G1R2:!.*]] |
| // CHECK: store ptr %1, ptr {{.*}}, !dbg [[G1R1:!.*]] |
| // CHECK: %3 = extractvalue { ptr, ptr } %call, 1, !dbg [[G1R2]] |
| // CHECK: store ptr %3, ptr {{.*}}, !dbg [[G1R1:!.*]] |
| Struct s = get(); |
| // CHECK: ret{{.*}}, !dbg [[RET:!.*]] |
| } |
| |
| typedef struct { int i; } Int; |
| Int getInt(void); |
| |
| // CHECK-C: @test2 |
| // CHECK-CXX: @_Z5test2v |
| void test2() { |
| // CHECK: %call = call i32 @{{(_Z6)?}}getInt{{v?}}(), !dbg [[T2_G1R2:!.*]] |
| // CHECK: [[gep:%.*]] = getelementptr inbounds nuw %struct.Int, ptr %i, i32 0, i32 0 |
| // CHECK: store i32 %call, ptr [[gep]]{{.*}}, !dbg [[T2_G1R1:!.*]] |
| // CHECK: ret{{.*}}, !dbg [[T2_RET:!.*]] |
| Int i = getInt(); |
| } |
| |
| // CHECK: [[G1R2]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 2) |
| // CHECK: [[G1R1]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 1) |
| // CHECK: [[RET]] = !DILocation({{.*}}, atomGroup: 2, atomRank: 1) |
| // CHECK: [[T2_G1R2]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 2) |
| // CHECK: [[T2_G1R1]] = !DILocation({{.*}}, atomGroup: 1, atomRank: 1) |
| // CHECK: [[T2_RET]] = !DILocation({{.*}}, atomGroup: 2, atomRank: 1) |