[PATCH] D23766: DebugInfo: introduce DIFlagsUnderlying type for debug info flags

Victor via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 29 11:30:49 PDT 2016

vleschuk added a comment.

In https://reviews.llvm.org/D23766#528004, @dblaikie wrote:

> Why is it that we aren't just using teh DIFlags type directly everywhere we are currently using unsigned (everywhere you're changing to DIFlagsUnderlying)?

Because constructions like the following do not compile

  enum DIFlags: uint32_t
      Flag1 = 1,
      Flag2 = 1 << 2,
      Flag3 = 1 << 3,
  // .... 
  DIFlags Flags = Flag1 | Flag2; // expression (Flag1 | Flag2) isn't DIFlags, it results in underlying type

  clang++ -std=c++11 t.cpp -o t
  t.cpp:12:13: error: cannot initialize a variable of type 'DIFlags' with an rvalue of type 'unsigned int'
      DIFlags Flags = Flag1 | Flag2;
              ^       ~~~~~~~~~~~~~
  1 error generated.


More information about the llvm-commits mailing list