comparison 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
comparison
equal deleted inserted replaced
173:0572611fdcc8 207:2e18cbf3894f
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