text: // 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
  