| // RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s |
| |
| namespace dr2338 { |
| namespace A { |
| enum E { Zero, One }; |
| E a(int x) { return static_cast<E>(x); } |
| // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381A1aEi |
| // CHECK: ret i32 %0 |
| |
| E b(int x) { return (E)x; } |
| // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381A1bEi |
| // CHECK: ret i32 %0 |
| |
| } // namespace A |
| namespace B { |
| enum E : bool { Zero, One }; |
| E a(int x) { return static_cast<E>(x); } |
| // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381B1aEi |
| // CHECK: ret i1 %tobool |
| |
| E b(int x) { return (E)x; } |
| // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381B1bEi |
| // CHECK: ret i1 %tobool |
| |
| } // namespace B |
| namespace C { |
| enum class E { Zero, One }; |
| E a(int x) { return static_cast<E>(x); } |
| // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381C1aEi |
| // CHECK: ret i32 %0 |
| |
| E b(int x) { return (E)x; } |
| // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381C1bEi |
| // CHECK: ret i32 %0 |
| |
| } // namespace C |
| namespace D { |
| enum class E : bool { Zero, One }; |
| E a(int x) { return static_cast<E>(x); } |
| // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381D1aEi |
| // CHECK: ret i1 %tobool |
| |
| E b(int x) { return (E)x; } |
| |
| // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381D1bEi |
| // CHECK: ret i1 %tobool |
| |
| } // namespace D |
| } // namespace dr2338 |