1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s 2 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 9 10 E b(int x) { return (E)x; } 11 // CHECK-LABEL: define i32 @_ZN6dr23381A1bEi 12 // CHECK: ret i32 %0 13 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 20 21 E b(int x) { return (E)x; } 22 // CHECK-LABEL: define zeroext i1 @_ZN6dr23381B1bEi 23 // CHECK: ret i1 %tobool 24 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 31 32 E b(int x) { return (E)x; } 33 // CHECK-LABEL: define i32 @_ZN6dr23381C1bEi 34 // CHECK: ret i32 %0 35 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 42 43 E b(int x) { return (E)x; } 44 45 // CHECK-LABEL: define zeroext i1 @_ZN6dr23381D1bEi 46 // CHECK: ret i1 %tobool 47 48 } // namespace D 49 } // namespace dr2338 50