llvm-capstone/clang/test/CodeGen/debug-info-switch-fallthrough.c
Adrian Prantl 843390c58a Apply proper source location to fallthrough switch cases.
This fixes a bug in clang where, when clang sees a switch with a
fallthrough to a default like this:

static void funcA(void) {}
static void funcB(void) {}

int main(int argc, char **argv) {

switch (argc) {
    case 0:
        funcA();
        break;
    case 10:
    default:
        funcB();
        break;
}
}

It does not add a proper debug location for that switch case, such as
case 10: above.

Patch by Shubham Rastogi!

Differential Revision: https://reviews.llvm.org/D109940
2021-09-17 14:45:04 -07:00

18 lines
490 B
C

// RUN: %clang_cc1 -triple x86_64-apple-macosx11.0.0 -debug-info-kind=standalone -emit-llvm %s -o - | FileCheck %s
// CHECK: ], !dbg !{{[0-9]+}}
// CHECK-EMPTY:
// CHECK-NEXT: {{.+}}
// CHECK-NEXT: br {{.+}}, !dbg !{{[0-9+]}}
// CHECK-EMPTY:
// CHECK-NEXT: {{.+}}
// CHECK-NEXT: br {{.+}}, !dbg ![[LOC:[0-9]+]]
void test(int num) {
switch (num) {
case 0:
break;
case 10: // CHECK: ![[LOC]] = !DILocation(line: [[@LINE]], column:{{.+}}, scope: {{.+}})
default:
break;
}
}