<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:10pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 10pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<p style="margin-top:0; margin-bottom:0">Hello</p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0">Interesting, what kind of failures?</p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0">If they are causing you problems, of course feel free to revert.</p>
<p style="margin-top:0; margin-bottom:0">Dave</p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
</div>
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b><br>
</b></font></div>
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size: 11pt;"><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">From:</span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">
 Eric Christopher <echristo@gmail.com></span><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">Sent:</span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"> 17 September
 2018 18:07:47</span><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">To:</span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"> David Green</span><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">Cc:</span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"> cfe-commits@lists.llvm.org</span><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">Subject:</span><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"> Re: r342053
 - [CodeGen] Align rtti and vtable data</span></font><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">
</span>
<div><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"> </span></div>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span></div>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<meta content="text/html; charset=utf-8">
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<div><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<div dir="ltr"><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">Hi David,
</span>
<div><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span></div>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<div><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">I'm seeing test failures after this patch. I'm trying to get a test case reduced, but can we revert until we figure it out?</span></div>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<div><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span></div>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<div><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">Thanks!</span></div>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<div><br>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span></div>
<span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;"></span>
<div><span style="font-family: Calibri, Helvetica, sans-serif; font-size: 10pt;">-eric</span></div>
</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr">On Wed, Sep 12, 2018 at 7:10 AM David Green via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
Author: dmgreen<br>
Date: Wed Sep 12 07:09:06 2018<br>
New Revision: 342053<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=342053&view=rev" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project?rev=342053&view=rev</a><br>
Log:<br>
[CodeGen] Align rtti and vtable data<br>
<br>
Previously the alignment on the newly created rtti/typeinfo data was largely<br>
not set, meaning that DataLayout::getPreferredAlignment was free to overalign<br>
it to 16 bytes. This causes unnecessary code bloat.<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D51416" rel="noreferrer" target="_blank">
https://reviews.llvm.org/D51416</a><br>
<br>
Modified:<br>
    cfe/trunk/lib/CodeGen/CGVTT.cpp<br>
    cfe/trunk/lib/CodeGen/CGVTables.cpp<br>
    cfe/trunk/lib/CodeGen/CodeGenModule.cpp<br>
    cfe/trunk/lib/CodeGen/CodeGenModule.h<br>
    cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp<br>
    cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp<br>
    cfe/trunk/test/CodeGenCXX/microsoft-abi-vbtables.cpp<br>
    cfe/trunk/test/CodeGenCXX/vtable-align.cpp<br>
    cfe/trunk/test/CodeGenCXX/vtable-linkage.cpp<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Sep 12 07:09:06 2018<br>
@@ -119,10 +119,10 @@ llvm::GlobalVariable *CodeGenVTables::Ge<br>
<br>
   llvm::ArrayType *ArrayType =<br>
     llvm::ArrayType::get(CGM.Int8PtrTy, Builder.getVTTComponents().size());<br>
+  unsigned Align = CGM.getDataLayout().getABITypeAlignment(CGM.Int8PtrTy);<br>
<br>
-  llvm::GlobalVariable *GV =<br>
-    CGM.CreateOrReplaceCXXRuntimeVariable(Name, ArrayType,<br>
-                                          llvm::GlobalValue::ExternalLinkage);<br>
+  llvm::GlobalVariable *GV = CGM.CreateOrReplaceCXXRuntimeVariable(<br>
+      Name, ArrayType, llvm::GlobalValue::ExternalLinkage, Align);<br>
   GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);<br>
   return GV;<br>
 }<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CGVTables.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Sep 12 07:09:06 2018<br>
@@ -756,9 +756,11 @@ CodeGenVTables::GenerateConstructionVTab<br>
   if (Linkage == llvm::GlobalVariable::AvailableExternallyLinkage)<br>
     Linkage = llvm::GlobalVariable::InternalLinkage;<br>
<br>
+  unsigned Align = CGM.getDataLayout().getABITypeAlignment(VTType);<br>
+<br>
   // Create the variable that will hold the construction vtable.<br>
   llvm::GlobalVariable *VTable =<br>
-    CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage);<br>
+      CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage, Align);<br>
   CGM.setGVProperties(VTable, RD);<br>
<br>
   // V-tables are always unnamed_addr.<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Sep 12 07:09:06 2018<br>
@@ -3099,10 +3099,9 @@ CodeGenModule::GetAddrOfGlobal(GlobalDec<br>
                               IsForDefinition);<br>
 }<br>
<br>
-llvm::GlobalVariable *<br>
-CodeGenModule::CreateOrReplaceCXXRuntimeVariable(StringRef Name,<br>
-                                      llvm::Type *Ty,<br>
-                                      llvm::GlobalValue::LinkageTypes Linkage) {<br>
+llvm::GlobalVariable *CodeGenModule::CreateOrReplaceCXXRuntimeVariable(<br>
+    StringRef Name, llvm::Type *Ty, llvm::GlobalValue::LinkageTypes Linkage,<br>
+    unsigned Alignment) {<br>
   llvm::GlobalVariable *GV = getModule().getNamedGlobal(Name);<br>
   llvm::GlobalVariable *OldGV = nullptr;<br>
<br>
@@ -3138,6 +3137,8 @@ CodeGenModule::CreateOrReplaceCXXRuntime<br>
       !GV->hasAvailableExternallyLinkage())<br>
     GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));<br>
<br>
+  GV->setAlignment(Alignment);<br>
+<br>
   return GV;<br>
 }<br>
<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)<br>
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Sep 12 07:09:06 2018<br>
@@ -764,7 +764,8 @@ public:<br>
   /// bitcast to the new variable.<br>
   llvm::GlobalVariable *<br>
   CreateOrReplaceCXXRuntimeVariable(StringRef Name, llvm::Type *Ty,<br>
-                                    llvm::GlobalValue::LinkageTypes Linkage);<br>
+                                    llvm::GlobalValue::LinkageTypes Linkage,<br>
+                                    unsigned Alignment);<br>
<br>
   llvm::Function *<br>
   CreateGlobalInitOrDestructFunction(llvm::FunctionType *ty, const Twine &name,<br>
<br>
Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Wed Sep 12 07:09:06 2018<br>
@@ -1598,12 +1598,6 @@ void ItaniumCXXABI::emitVTableDefinition<br>
   // Set the right visibility.<br>
   CGM.setGVProperties(VTable, RD);<br>
<br>
-  // Use pointer alignment for the vtable. Otherwise we would align them based<br>
-  // on the size of the initializer which doesn't make sense as only single<br>
-  // values are read.<br>
-  unsigned PAlign = CGM.getTarget().getPointerAlign(0);<br>
-  VTable->setAlignment(getContext().toCharUnitsFromBits(PAlign).getQuantity());<br>
-<br>
   // If this is the magic class __cxxabiv1::__fundamental_type_info,<br>
   // we will emit the typeinfo for the fundamental types. This is the<br>
   // same behaviour as GCC.<br>
@@ -1703,8 +1697,14 @@ llvm::GlobalVariable *ItaniumCXXABI::get<br>
       CGM.getItaniumVTableContext().getVTableLayout(RD);<br>
   llvm::Type *VTableType = CGM.getVTables().getVTableType(VTLayout);<br>
<br>
+  // Use pointer alignment for the vtable. Otherwise we would align them based<br>
+  // on the size of the initializer which doesn't make sense as only single<br>
+  // values are read.<br>
+  unsigned PAlign = CGM.getTarget().getPointerAlign(0);<br>
+<br>
   VTable = CGM.CreateOrReplaceCXXRuntimeVariable(<br>
-      Name, VTableType, llvm::GlobalValue::ExternalLinkage);<br>
+      Name, VTableType, llvm::GlobalValue::ExternalLinkage,<br>
+      getContext().toCharUnitsFromBits(PAlign).getQuantity());<br>
   VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);<br>
<br>
   CGM.setGVProperties(VTable, RD);<br>
@@ -2725,9 +2725,10 @@ llvm::GlobalVariable *ItaniumRTTIBuilder<br>
   // get the mangled name of the type.<br>
   llvm::Constant *Init = llvm::ConstantDataArray::getString(VMContext,<br>
                                                             Name.substr(4));<br>
+  auto Align = CGM.getContext().getTypeAlignInChars(CGM.getContext().CharTy);<br>
<br>
-  llvm::GlobalVariable *GV =<br>
-    CGM.CreateOrReplaceCXXRuntimeVariable(Name, Init->getType(), Linkage);<br>
+  llvm::GlobalVariable *GV = CGM.CreateOrReplaceCXXRuntimeVariable(<br>
+      Name, Init->getType(), Linkage, Align.getQuantity());<br>
<br>
   GV->setInitializer(Init);<br>
<br>
@@ -3366,6 +3367,10 @@ llvm::Constant *ItaniumRTTIBuilder::Buil<br>
   if (CGM.supportsCOMDAT() && GV->isWeakForLinker())<br>
     GV->setComdat(M.getOrInsertComdat(GV->getName()));<br>
<br>
+  CharUnits Align =<br>
+      CGM.getContext().toCharUnitsFromBits(CGM.getTarget().getPointerAlign(0));<br>
+  GV->setAlignment(Align.getQuantity());<br>
+<br>
   // The Itanium ABI specifies that type_info objects must be globally<br>
   // unique, with one exception: if the type is an incomplete class<br>
   // type or a (possibly indirect) pointer to one.  That exception<br>
<br>
Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Wed Sep 12 07:09:06 2018<br>
@@ -2024,8 +2024,10 @@ MicrosoftCXXABI::getAddrOfVBTable(const<br>
<br>
   assert(!CGM.getModule().getNamedGlobal(Name) &&<br>
          "vbtable with this name already exists: mangling bug?");<br>
-  llvm::GlobalVariable *GV =<br>
-      CGM.CreateOrReplaceCXXRuntimeVariable(Name, VBTableType, Linkage);<br>
+  CharUnits Alignment =<br>
+      CGM.getContext().getTypeAlignInChars(CGM.getContext().IntTy);<br>
+  llvm::GlobalVariable *GV = CGM.CreateOrReplaceCXXRuntimeVariable(<br>
+      Name, VBTableType, Linkage, Alignment.getQuantity());<br>
   GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);<br>
<br>
   if (RD->hasAttr<DLLImportAttr>())<br>
<br>
Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-vbtables.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vbtables.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-vbtables.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGenCXX/microsoft-abi-vbtables.cpp (original)<br>
+++ cfe/trunk/test/CodeGenCXX/microsoft-abi-vbtables.cpp Wed Sep 12 07:09:06 2018<br>
@@ -19,7 +19,7 @@ D d; // Force vbtable emission.<br>
 // C: vbptr C<br>
 //    int c<br>
<br>
-// CHECK-DAG: @"??_8D@Test1@@7B01@@" = linkonce_odr unnamed_addr constant [4 x i32] [i32 0, i32 8, i32 12, i32 20]<br>
+// CHECK-DAG: @"??_8D@Test1@@7B01@@" = linkonce_odr unnamed_addr constant [4 x i32] [i32 0, i32 8, i32 12, i32 20], comdat, align 4<br>
 // CHECK-DAG: @"??_8D@Test1@@7BB@1@@" = {{.*}} [2 x i32] [i32 0, i32 -4]<br>
 // CHECK-DAG: @"??_8D@Test1@@7BC@1@@" = {{.*}} [2 x i32] [i32 0, i32 -12]<br>
 // CHECK-DAG: @"??_8C@Test1@@7B@" = {{.*}} [2 x i32] [i32 0, i32 8]<br>
<br>
Modified: cfe/trunk/test/CodeGenCXX/vtable-align.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/vtable-align.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/vtable-align.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGenCXX/vtable-align.cpp (original)<br>
+++ cfe/trunk/test/CodeGenCXX/vtable-align.cpp Wed Sep 12 07:09:06 2018<br>
@@ -10,5 +10,8 @@ struct A {<br>
 void A::f() {}<br>
<br>
 // CHECK-32: @_ZTV1A = unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast (void (%struct.A*)* @_ZN1A1fEv to i8*), i8* bitcast (void (%struct.A*)* @_ZN1A1gEv to i8*), i8* bitcast (void (%struct.A*)*
 @_ZN1A1hEv to i8*)] }, align 4<br>
-<br>
+// CHECK-32: @_ZTS1A = constant [3 x i8] c"1A\00", align 1<br>
+// CHECK-32: @_ZTI1A = constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i32 2) to i8*), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @_ZTS1A, i32 0, i32 0) }, align 4<br>
 // CHECK-64: @_ZTV1A = unnamed_addr constant { [5 x i8*] } { [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTI1A to i8*), i8* bitcast (void (%struct.A*)* @_ZN1A1fEv to i8*), i8* bitcast (void (%struct.A*)* @_ZN1A1gEv to i8*), i8* bitcast (void (%struct.A*)*
 @_ZN1A1hEv to i8*)] }, align 8<br>
+// CHECK-64: @_ZTS1A = constant [3 x i8] c"1A\00", align 1<br>
+// CHECK-64: @_ZTI1A = constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @_ZTS1A, i32 0, i32 0) }, align 8<br>
<br>
Modified: cfe/trunk/test/CodeGenCXX/vtable-linkage.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/vtable-linkage.cpp?rev=342053&r1=342052&r2=342053&view=diff" rel="noreferrer" target="_blank">
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/vtable-linkage.cpp?rev=342053&r1=342052&r2=342053&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/test/CodeGenCXX/vtable-linkage.cpp (original)<br>
+++ cfe/trunk/test/CodeGenCXX/vtable-linkage.cpp Wed Sep 12 07:09:06 2018<br>
@@ -98,10 +98,10 @@ void use_F() {<br>
<br>
 // C has no key function, so its vtable should have weak_odr linkage<br>
 // and hidden visibility (rdar://problem/7523229).<br>
-// CHECK-DAG: @_ZTV1C = linkonce_odr unnamed_addr constant {{.*}}, comdat,<br>
-// CHECK-DAG: @_ZTS1C = linkonce_odr constant {{.*}}, comdat{{$}}<br>
-// CHECK-DAG: @_ZTI1C = linkonce_odr constant {{.*}}, comdat{{$}}<br>
-// CHECK-DAG: @_ZTT1C = linkonce_odr unnamed_addr constant {{.*}}, comdat{{$}}<br>
+// CHECK-DAG: @_ZTV1C = linkonce_odr unnamed_addr constant {{.*}}, comdat, align 8{{$}}<br>
+// CHECK-DAG: @_ZTS1C = linkonce_odr constant {{.*}}, comdat, align 1{{$}}<br>
+// CHECK-DAG: @_ZTI1C = linkonce_odr constant {{.*}}, comdat, align 8{{$}}<br>
+// CHECK-DAG: @_ZTT1C = linkonce_odr unnamed_addr constant {{.*}}, comdat, align 8{{$}}<br>
<br>
 // D has a key function that is defined in this translation unit so its vtable is<br>
 // defined in the translation unit.<br>
@@ -120,27 +120,27 @@ void use_F() {<br>
 // defined in this translation unit, so its vtable should have<br>
 // weak_odr linkage.<br>
 // CHECK-DAG: @_ZTV1EIsE = weak_odr unnamed_addr constant {{.*}}, comdat,<br>
-// CHECK-DAG: @_ZTS1EIsE = weak_odr constant {{.*}}, comdat{{$}}<br>
-// CHECK-DAG: @_ZTI1EIsE = weak_odr constant {{.*}}, comdat{{$}}<br>
+// CHECK-DAG: @_ZTS1EIsE = weak_odr constant {{.*}}, comdat, align 1{{$}}<br>
+// CHECK-DAG: @_ZTI1EIsE = weak_odr constant {{.*}}, comdat, align 8{{$}}<br>
<br>
 // F<short> is an explicit template instantiation without a key<br>
 // function, so its vtable should have weak_odr linkage<br>
 // CHECK-DAG: @_ZTV1FIsE = weak_odr unnamed_addr constant {{.*}}, comdat,<br>
-// CHECK-DAG: @_ZTS1FIsE = weak_odr constant {{.*}}, comdat{{$}}<br>
-// CHECK-DAG: @_ZTI1FIsE = weak_odr constant {{.*}}, comdat{{$}}<br>
+// CHECK-DAG: @_ZTS1FIsE = weak_odr constant {{.*}}, comdat, align 1{{$}}<br>
+// CHECK-DAG: @_ZTI1FIsE = weak_odr constant {{.*}}, comdat, align 8{{$}}<br>
<br>
 // E<long> is an implicit template instantiation with a key function<br>
 // defined in this translation unit, so its vtable should have<br>
 // linkonce_odr linkage.<br>
 // CHECK-DAG: @_ZTV1EIlE = linkonce_odr unnamed_addr constant {{.*}}, comdat,<br>
-// CHECK-DAG: @_ZTS1EIlE = linkonce_odr constant {{.*}}, comdat{{$}}<br>
-// CHECK-DAG: @_ZTI1EIlE = linkonce_odr constant {{.*}}, comdat{{$}}<br>
+// CHECK-DAG: @_ZTS1EIlE = linkonce_odr constant {{.*}}, comdat, align 1{{$}}<br>
+// CHECK-DAG: @_ZTI1EIlE = linkonce_odr constant {{.*}}, comdat, align 8{{$}}<br>
<br>
 // F<long> is an implicit template instantiation with no key function,<br>
 // so its vtable should have linkonce_odr linkage.<br>
 // CHECK-DAG: @_ZTV1FIlE = linkonce_odr unnamed_addr constant {{.*}}, comdat,<br>
-// CHECK-DAG: @_ZTS1FIlE = linkonce_odr constant {{.*}}, comdat{{$}}<br>
-// CHECK-DAG: @_ZTI1FIlE = linkonce_odr constant {{.*}}, comdat{{$}}<br>
+// CHECK-DAG: @_ZTS1FIlE = linkonce_odr constant {{.*}}, comdat, align 1{{$}}<br>
+// CHECK-DAG: @_ZTI1FIlE = linkonce_odr constant {{.*}}, comdat, align 8{{$}}<br>
<br>
 // F<int> is an explicit template instantiation declaration without a<br>
 // key function, so its vtable should have external linkage.<br>
@@ -171,8 +171,8 @@ void use_F() {<br>
 // F<char> is an explicit specialization without a key function, so<br>
 // its vtable should have linkonce_odr linkage.<br>
 // CHECK-DAG: @_ZTV1FIcE = linkonce_odr unnamed_addr constant {{.*}}, comdat,<br>
-// CHECK-DAG: @_ZTS1FIcE = linkonce_odr constant {{.*}}, comdat{{$}}<br>
-// CHECK-DAG: @_ZTI1FIcE = linkonce_odr constant {{.*}}, comdat{{$}}<br>
+// CHECK-DAG: @_ZTS1FIcE = linkonce_odr constant {{.*}}, comdat, align 1{{$}}<br>
+// CHECK-DAG: @_ZTI1FIcE = linkonce_odr constant {{.*}}, comdat, align 8{{$}}<br>
<br>
 // CHECK-DAG: @_ZTV1GIiE = linkonce_odr unnamed_addr constant {{.*}}, comdat,<br>
 template <typename T><br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote>
</div>
</div>
</div>
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose,
 or store or copy the information in any medium. Thank you.
</body>
</html>