16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -emit-llvm %s -o -  | FileCheck %s
26bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
36bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesnamespace Common {
46bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesenum RenderMode {
56bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  kRenderEGA,
66bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  kRenderCGA
76bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines};
86bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesclass C;
96bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesclass A {
106bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  A();
116bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  C *_vm;
126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  unsigned char _highlightColorTableVGA[];
136bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  static const unsigned char b[];
146bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines};
15c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// CHECK: [[Common_A_b:@[^ ]+]] = constant [1 x i8] zeroinitializer
166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesclass B {
176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinespublic:
186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  Common::RenderMode _configRenderMode;
196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines};
206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesclass C : public B {};
216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen HinesA::A() {
226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  0 == Common::kRenderCGA || _vm->_configRenderMode == Common::kRenderEGA
236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines      ? b
246bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines      : _highlightColorTableVGA;
256bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// Make sure the PHI value is casted correctly to the PHI type
26c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// CHECK: %{{.*}} = phi [0 x i8]* [ bitcast ([1 x i8]* [[Common_A_b]] to [0 x i8]*), %{{.*}} ], [ %{{.*}}, %{{.*}} ]
276bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}
286bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesconst unsigned char A::b[] = { 0 };
296bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}
30