Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / CodeGen / enum-bool.cpp
blob2dcb3373bb3691cdc91077419483487c09ac1a1a
1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s
3 namespace dr2338 {
4 namespace A {
5 enum E { Zero, One };
6 E a(int x) { return static_cast<E>(x); }
7 // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381A1aEi
8 // CHECK: ret i32 %0
10 E b(int x) { return (E)x; }
11 // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381A1bEi
12 // CHECK: ret i32 %0
14 } // namespace A
15 namespace B {
16 enum E : bool { Zero, One };
17 E a(int x) { return static_cast<E>(x); }
18 // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381B1aEi
19 // CHECK: ret i1 %tobool
21 E b(int x) { return (E)x; }
22 // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381B1bEi
23 // CHECK: ret i1 %tobool
25 } // namespace B
26 namespace C {
27 enum class E { Zero, One };
28 E a(int x) { return static_cast<E>(x); }
29 // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381C1aEi
30 // CHECK: ret i32 %0
32 E b(int x) { return (E)x; }
33 // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381C1bEi
34 // CHECK: ret i32 %0
36 } // namespace C
37 namespace D {
38 enum class E : bool { Zero, One };
39 E a(int x) { return static_cast<E>(x); }
40 // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381D1aEi
41 // CHECK: ret i1 %tobool
43 E b(int x) { return (E)x; }
45 // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381D1bEi
46 // CHECK: ret i1 %tobool
48 } // namespace D
49 } // namespace dr2338