Update for llvm api change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219800 91177308-0d34-0410-b5e6-96231b3b80d8
Fix for PR21254 - Assertion in comment parser

The size of the ID field in CommandInfo was narrow, leading to potential 
wrap-around of command IDs, causing misinterpretation later on.
The patch does the following:
- It extends the ID bitfield from 8 to 20 bits.
- It provides a DRY definition of the number of bits for the field to 
  avoid using literal numbers in different files.
- It introduces a new assertion that checks for the wrap-around.
- It adds the testcase from PR21254.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219802 91177308-0d34-0410-b5e6-96231b3b80d8
CodeGen: Cleanup CGRecordLowering::lowerUnion a little

Remove some duplicated state, no functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219805 91177308-0d34-0410-b5e6-96231b3b80d8
Don't use a global_ctors comdat for globals that aren't externally visible

In particular, if you have two identical templates in different TUs in
anonymous namespaces, we would use the same global_ctors comdat key for
both. As a result, only one would be run.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219806 91177308-0d34-0410-b5e6-96231b3b80d8