// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir // RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t-cir.ll // RUN: FileCheck --input-file=%t-cir.ll %s --check-prefix=LLVM // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o %t.ll // RUN: FileCheck --input-file=%t.ll %s --check-prefix=OGCG extern int x; void g(void); // The call to g() is unreachable, but we currently want to convert it during // the CIR-to-LLVM lowering pass to avoid verification errors. void f(void) { goto end; lab: if (0) goto lab; if (x) g(); end:; } // CIR-DAG: cir.global "private" external{{.*}} @x // CIR: cir.func{{.*}} @f // CIR: cir.goto "end" // CIR: cir.label "lab" // CIR: cir.get_global @x // LLVM: @x = external {{(dso_local )?}}global i32 // LLVM: define dso_local void @f // LLVM: load i32, ptr @x // OGCG: @x = external {{.*}}global i32 // OGCG: define dso_local void @f // OGCG: load i32, ptr @x