Mercurial > hg > CbC > CbC_llvm
diff clang/test/CodeGen/enum-bool.cpp @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clang/test/CodeGen/enum-bool.cpp Tue Jun 08 06:07:14 2021 +0900 @@ -0,0 +1,49 @@ +// 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