1fef26071SMark de Wever // RUN: %clang_cc1 -triple x86_64-unknown-unknown -S -emit-llvm -o - %s | FileCheck %s 2fef26071SMark de Wever 3fef26071SMark de Wever namespace dr2338 { 4fef26071SMark de Wever namespace A { 5fef26071SMark de Wever enum E { Zero, One }; a(int x)6fef26071SMark de WeverE a(int x) { return static_cast<E>(x); } 7*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381A1aEi 8fef26071SMark de Wever // CHECK: ret i32 %0 9fef26071SMark de Wever b(int x)10fef26071SMark de WeverE b(int x) { return (E)x; } 11*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381A1bEi 12fef26071SMark de Wever // CHECK: ret i32 %0 13fef26071SMark de Wever 14fef26071SMark de Wever } // namespace A 15fef26071SMark de Wever namespace B { 16fef26071SMark de Wever enum E : bool { Zero, One }; a(int x)17fef26071SMark de WeverE a(int x) { return static_cast<E>(x); } 18*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381B1aEi 19fef26071SMark de Wever // CHECK: ret i1 %tobool 20fef26071SMark de Wever b(int x)21fef26071SMark de WeverE b(int x) { return (E)x; } 22*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381B1bEi 23fef26071SMark de Wever // CHECK: ret i1 %tobool 24fef26071SMark de Wever 25fef26071SMark de Wever } // namespace B 26fef26071SMark de Wever namespace C { 27fef26071SMark de Wever enum class E { Zero, One }; a(int x)28fef26071SMark de WeverE a(int x) { return static_cast<E>(x); } 29*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381C1aEi 30fef26071SMark de Wever // CHECK: ret i32 %0 31fef26071SMark de Wever b(int x)32fef26071SMark de WeverE b(int x) { return (E)x; } 33*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} i32 @_ZN6dr23381C1bEi 34fef26071SMark de Wever // CHECK: ret i32 %0 35fef26071SMark de Wever 36fef26071SMark de Wever } // namespace C 37fef26071SMark de Wever namespace D { 38fef26071SMark de Wever enum class E : bool { Zero, One }; a(int x)39fef26071SMark de WeverE a(int x) { return static_cast<E>(x); } 40*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381D1aEi 41fef26071SMark de Wever // CHECK: ret i1 %tobool 42fef26071SMark de Wever b(int x)43fef26071SMark de WeverE b(int x) { return (E)x; } 44fef26071SMark de Wever 45*fd739804SFangrui Song // CHECK-LABEL: define{{.*}} zeroext i1 @_ZN6dr23381D1bEi 46fef26071SMark de Wever // CHECK: ret i1 %tobool 47fef26071SMark de Wever 48fef26071SMark de Wever } // namespace D 49fef26071SMark de Wever } // namespace dr2338 50