mirror of https://github.com/microsoft/clang.git
Update clang for D20348
Differential Revision: http://reviews.llvm.org/D20339 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272710 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c0be6ec1bf
commit
6f43cc7050
|
@ -1274,7 +1274,7 @@ void CodeGenFunction::EmitAutoVarInit(const AutoVarEmission &emission) {
|
|||
llvm::GlobalValue::PrivateLinkage,
|
||||
constant, Name);
|
||||
GV->setAlignment(Loc.getAlignment().getQuantity());
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
|
||||
Address SrcPtr = Address(GV, Loc.getAlignment());
|
||||
if (SrcPtr.getType() != BP)
|
||||
|
|
|
@ -2324,7 +2324,7 @@ llvm::Constant *CodeGenFunction::EmitCheckTypeDescriptor(QualType T) {
|
|||
auto *GV = new llvm::GlobalVariable(
|
||||
CGM.getModule(), Descriptor->getType(),
|
||||
/*isConstant=*/true, llvm::GlobalVariable::PrivateLinkage, Descriptor);
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
CGM.getSanitizerMetadata()->disableSanitizerForGlobal(GV);
|
||||
|
||||
// Remember the descriptor for this type.
|
||||
|
@ -2545,7 +2545,7 @@ void CodeGenFunction::EmitCheck(
|
|||
auto *InfoPtr =
|
||||
new llvm::GlobalVariable(CGM.getModule(), Info->getType(), false,
|
||||
llvm::GlobalVariable::PrivateLinkage, Info);
|
||||
InfoPtr->setUnnamedAddr(true);
|
||||
InfoPtr->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
CGM.getSanitizerMetadata()->disableSanitizerForGlobal(InfoPtr);
|
||||
Args.push_back(Builder.CreateBitCast(InfoPtr, Int8PtrTy));
|
||||
ArgTypes.push_back(Int8PtrTy);
|
||||
|
@ -2604,7 +2604,7 @@ void CodeGenFunction::EmitCfiSlowPathCheck(
|
|||
auto *InfoPtr =
|
||||
new llvm::GlobalVariable(CGM.getModule(), Info->getType(), false,
|
||||
llvm::GlobalVariable::PrivateLinkage, Info);
|
||||
InfoPtr->setUnnamedAddr(true);
|
||||
InfoPtr->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
CGM.getSanitizerMetadata()->disableSanitizerForGlobal(InfoPtr);
|
||||
|
||||
llvm::Constant *SlowPathDiagFn = CGM.getModule().getOrInsertFunction(
|
||||
|
|
|
@ -909,7 +909,7 @@ Address CGOpenMPRuntime::getOrCreateDefaultLocation(unsigned Flags) {
|
|||
auto DefaultOpenMPLocation = new llvm::GlobalVariable(
|
||||
CGM.getModule(), IdentTy, /*isConstant*/ true,
|
||||
llvm::GlobalValue::PrivateLinkage, /*Initializer*/ nullptr);
|
||||
DefaultOpenMPLocation->setUnnamedAddr(true);
|
||||
DefaultOpenMPLocation->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
DefaultOpenMPLocation->setAlignment(Align.getQuantity());
|
||||
|
||||
llvm::Constant *Zero = llvm::ConstantInt::get(CGM.Int32Ty, 0, true);
|
||||
|
@ -2840,7 +2840,7 @@ CGOpenMPRuntime::createOffloadingBinaryDescriptorRegistration() {
|
|||
M, DeviceImagesInitTy, /*isConstant=*/true,
|
||||
llvm::GlobalValue::InternalLinkage, DeviceImagesInit,
|
||||
".omp_offloading.device_images");
|
||||
DeviceImages->setUnnamedAddr(true);
|
||||
DeviceImages->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
|
||||
// This is a Zero array to be used in the creation of the constant expressions
|
||||
llvm::Constant *Index[] = {llvm::Constant::getNullValue(CGM.Int32Ty),
|
||||
|
@ -2903,7 +2903,7 @@ void CGOpenMPRuntime::createOffloadEntry(llvm::Constant *ID,
|
|||
new llvm::GlobalVariable(M, StrPtrInit->getType(), /*isConstant=*/true,
|
||||
llvm::GlobalValue::InternalLinkage, StrPtrInit,
|
||||
".omp_offloading.entry_name");
|
||||
Str->setUnnamedAddr(true);
|
||||
Str->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
llvm::Constant *StrPtr = llvm::ConstantExpr::getBitCast(Str, CGM.Int8PtrTy);
|
||||
|
||||
// Create the entry struct.
|
||||
|
@ -5623,7 +5623,7 @@ emitOffloadingArrays(CodeGenFunction &CGF, llvm::Value *&BasePointersArray,
|
|||
CGM.getModule(), SizesArrayInit->getType(),
|
||||
/*isConstant=*/true, llvm::GlobalValue::PrivateLinkage,
|
||||
SizesArrayInit, ".offload_sizes");
|
||||
SizesArrayGbl->setUnnamedAddr(true);
|
||||
SizesArrayGbl->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
SizesArray = SizesArrayGbl;
|
||||
}
|
||||
|
||||
|
@ -5635,7 +5635,7 @@ emitOffloadingArrays(CodeGenFunction &CGF, llvm::Value *&BasePointersArray,
|
|||
CGM.getModule(), MapTypesArrayInit->getType(),
|
||||
/*isConstant=*/true, llvm::GlobalValue::PrivateLinkage,
|
||||
MapTypesArrayInit, ".offload_maptypes");
|
||||
MapTypesArrayGbl->setUnnamedAddr(true);
|
||||
MapTypesArrayGbl->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
MapTypesArray = MapTypesArrayGbl;
|
||||
|
||||
for (unsigned i = 0; i < PointerNumVal; ++i) {
|
||||
|
|
|
@ -121,7 +121,7 @@ llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) {
|
|||
llvm::GlobalVariable *GV =
|
||||
CGM.CreateOrReplaceCXXRuntimeVariable(Name, ArrayType,
|
||||
llvm::GlobalValue::ExternalLinkage);
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
return GV;
|
||||
}
|
||||
|
||||
|
|
|
@ -606,7 +606,7 @@ llvm::Constant *CodeGenVTables::CreateVTableInitializer(
|
|||
StringRef PureCallName = CGM.getCXXABI().GetPureVirtualCallName();
|
||||
PureVirtualFn = CGM.CreateRuntimeFunction(Ty, PureCallName);
|
||||
if (auto *F = dyn_cast<llvm::Function>(PureVirtualFn))
|
||||
F->setUnnamedAddr(true);
|
||||
F->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
PureVirtualFn = llvm::ConstantExpr::getBitCast(PureVirtualFn,
|
||||
CGM.Int8PtrTy);
|
||||
}
|
||||
|
@ -619,7 +619,7 @@ llvm::Constant *CodeGenVTables::CreateVTableInitializer(
|
|||
CGM.getCXXABI().GetDeletedVirtualCallName();
|
||||
DeletedVirtualFn = CGM.CreateRuntimeFunction(Ty, DeletedCallName);
|
||||
if (auto *F = dyn_cast<llvm::Function>(DeletedVirtualFn))
|
||||
F->setUnnamedAddr(true);
|
||||
F->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
DeletedVirtualFn = llvm::ConstantExpr::getBitCast(DeletedVirtualFn,
|
||||
CGM.Int8PtrTy);
|
||||
}
|
||||
|
@ -698,7 +698,7 @@ CodeGenVTables::GenerateConstructionVTable(const CXXRecordDecl *RD,
|
|||
CGM.setGlobalVisibility(VTable, RD);
|
||||
|
||||
// V-tables are always unnamed_addr.
|
||||
VTable->setUnnamedAddr(true);
|
||||
VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
|
||||
llvm::Constant *RTTI = CGM.GetAddrOfRTTIDescriptor(
|
||||
CGM.getContext().getTagDeclType(Base.getBase()));
|
||||
|
|
|
@ -1089,10 +1089,10 @@ void CodeGenModule::SetFunctionAttributes(GlobalDecl GD, llvm::Function *F,
|
|||
}
|
||||
|
||||
if (isa<CXXConstructorDecl>(FD) || isa<CXXDestructorDecl>(FD))
|
||||
F->setUnnamedAddr(true);
|
||||
F->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
else if (const auto *MD = dyn_cast<CXXMethodDecl>(FD))
|
||||
if (MD->isVirtual())
|
||||
F->setUnnamedAddr(true);
|
||||
F->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
|
||||
CreateFunctionBitSetEntry(FD, F);
|
||||
}
|
||||
|
@ -1347,7 +1347,7 @@ llvm::Constant *CodeGenModule::EmitAnnotationString(StringRef Str) {
|
|||
new llvm::GlobalVariable(getModule(), s->getType(), true,
|
||||
llvm::GlobalValue::PrivateLinkage, s, ".str");
|
||||
gv->setSection(AnnotationSection);
|
||||
gv->setUnnamedAddr(true);
|
||||
gv->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
AStr = gv;
|
||||
return gv;
|
||||
}
|
||||
|
@ -3157,7 +3157,7 @@ CodeGenModule::GetAddrOfConstantCFString(const StringLiteral *Literal) {
|
|||
auto *GV =
|
||||
new llvm::GlobalVariable(getModule(), C->getType(), /*isConstant=*/true,
|
||||
llvm::GlobalValue::PrivateLinkage, C, ".str");
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
// Don't enforce the target's minimum global alignment, since the only use
|
||||
// of the string is via this class initializer.
|
||||
CharUnits Align = isUTF16
|
||||
|
@ -3297,7 +3297,7 @@ CodeGenModule::GetAddrOfConstantString(const StringLiteral *Literal) {
|
|||
|
||||
auto *GV = new llvm::GlobalVariable(getModule(), C->getType(), isConstant,
|
||||
Linkage, C, ".str");
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
// Don't enforce the target's minimum global alignment, since the only use
|
||||
// of the string is via this class initializer.
|
||||
CharUnits Align = getContext().getTypeAlignInChars(getContext().CharTy);
|
||||
|
@ -3416,7 +3416,7 @@ GenerateStringLiteral(llvm::Constant *C, llvm::GlobalValue::LinkageTypes LT,
|
|||
M, C->getType(), !CGM.getLangOpts().WritableStrings, LT, C, GlobalName,
|
||||
nullptr, llvm::GlobalVariable::NotThreadLocal, AddrSpace);
|
||||
GV->setAlignment(Alignment.getQuantity());
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
if (GV->isWeakForLinker()) {
|
||||
assert(CGM.supportsCOMDAT() && "Only COFF uses weak string literals");
|
||||
GV->setComdat(M.getOrInsertComdat(GV->getName()));
|
||||
|
|
|
@ -1575,7 +1575,7 @@ llvm::GlobalVariable *ItaniumCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
|
|||
|
||||
VTable = CGM.CreateOrReplaceCXXRuntimeVariable(
|
||||
Name, ArrayType, llvm::GlobalValue::ExternalLinkage);
|
||||
VTable->setUnnamedAddr(true);
|
||||
VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
|
||||
if (RD->hasAttr<DLLImportAttr>())
|
||||
VTable->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
|
||||
|
|
|
@ -1712,7 +1712,7 @@ llvm::GlobalVariable *MicrosoftCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
|
|||
VTable = new llvm::GlobalVariable(CGM.getModule(), VTableType,
|
||||
/*isConstant=*/true, VTableLinkage,
|
||||
/*Initializer=*/nullptr, VTableName);
|
||||
VTable->setUnnamedAddr(true);
|
||||
VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
|
||||
llvm::Comdat *C = nullptr;
|
||||
if (!VFTableComesFromAnotherTU &&
|
||||
|
@ -1740,7 +1740,7 @@ llvm::GlobalVariable *MicrosoftCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
|
|||
/*AddressSpace=*/0, VFTableLinkage,
|
||||
VFTableName.str(), VTableGEP,
|
||||
&CGM.getModule());
|
||||
VFTable->setUnnamedAddr(true);
|
||||
VFTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
} else {
|
||||
// We don't need a GlobalAlias to be a symbol for the VTable if we won't
|
||||
// be referencing any RTTI data.
|
||||
|
@ -1920,7 +1920,7 @@ llvm::Function *MicrosoftCXXABI::EmitVirtualMemPtrThunk(
|
|||
ThunkFn->addFnAttr("thunk");
|
||||
|
||||
// These thunks can be compared, so they are not unnamed.
|
||||
ThunkFn->setUnnamedAddr(false);
|
||||
ThunkFn->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::None);
|
||||
|
||||
// Start codegen.
|
||||
CodeGenFunction CGF(CGM);
|
||||
|
@ -1977,7 +1977,7 @@ MicrosoftCXXABI::getAddrOfVBTable(const VPtrInfo &VBT, const CXXRecordDecl *RD,
|
|||
"vbtable with this name already exists: mangling bug?");
|
||||
llvm::GlobalVariable *GV =
|
||||
CGM.CreateOrReplaceCXXRuntimeVariable(Name, VBTableType, Linkage);
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
|
||||
if (RD->hasAttr<DLLImportAttr>())
|
||||
GV->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
|
||||
|
@ -3968,7 +3968,7 @@ llvm::Constant *MicrosoftCXXABI::getCatchableType(QualType T,
|
|||
auto *GV = new llvm::GlobalVariable(
|
||||
CGM.getModule(), CTType, /*Constant=*/true, getLinkageForRTTI(T),
|
||||
llvm::ConstantStruct::get(CTType, Fields), MangledName);
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
GV->setSection(".xdata");
|
||||
if (GV->isWeakForLinker())
|
||||
GV->setComdat(CGM.getModule().getOrInsertComdat(GV->getName()));
|
||||
|
@ -4086,7 +4086,7 @@ llvm::GlobalVariable *MicrosoftCXXABI::getCatchableTypeArray(QualType T) {
|
|||
CTA = new llvm::GlobalVariable(
|
||||
CGM.getModule(), CTAType, /*Constant=*/true, getLinkageForRTTI(T),
|
||||
llvm::ConstantStruct::get(CTAType, Fields), MangledName);
|
||||
CTA->setUnnamedAddr(true);
|
||||
CTA->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
CTA->setSection(".xdata");
|
||||
if (CTA->isWeakForLinker())
|
||||
CTA->setComdat(CGM.getModule().getOrInsertComdat(CTA->getName()));
|
||||
|
@ -4153,7 +4153,7 @@ llvm::GlobalVariable *MicrosoftCXXABI::getThrowInfo(QualType T) {
|
|||
auto *GV = new llvm::GlobalVariable(
|
||||
CGM.getModule(), TIType, /*Constant=*/true, getLinkageForRTTI(T),
|
||||
llvm::ConstantStruct::get(TIType, Fields), StringRef(MangledName));
|
||||
GV->setUnnamedAddr(true);
|
||||
GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
GV->setSection(".xdata");
|
||||
if (GV->isWeakForLinker())
|
||||
GV->setComdat(CGM.getModule().getOrInsertComdat(GV->getName()));
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.10.0 -emit-llvm -Oz -o - %s | FileCheck %s
|
||||
|
||||
// CHECK: define i32 @foo2(i32 %a) [[ATTRS2:#[0-9]+]] {
|
||||
// CHECK: define i32 @foo1(i32 %a) [[ATTRS1:#[0-9]+]] {
|
||||
// CHECK: define i32 @foo2(i32 %a) local_unnamed_addr [[ATTRS2:#[0-9]+]] {
|
||||
// CHECK: define i32 @foo1(i32 %a) local_unnamed_addr [[ATTRS1:#[0-9]+]] {
|
||||
|
||||
int foo1(int);
|
||||
|
||||
|
|
|
@ -8,18 +8,18 @@
|
|||
typedef float v4sf __attribute__ ((__vector_size__ (16)));
|
||||
typedef int v4i32 __attribute__ ((__vector_size__ (16)));
|
||||
|
||||
// O32: define void @test_v4sf(i32 inreg %a1.coerce0, i32 inreg %a1.coerce1, i32 inreg %a1.coerce2, i32 inreg %a1.coerce3, i32 signext %a2, i32, i32 inreg %a3.coerce0, i32 inreg %a3.coerce1, i32 inreg %a3.coerce2, i32 inreg %a3.coerce3) [[NUW:#[0-9]+]]
|
||||
// O32: define void @test_v4sf(i32 inreg %a1.coerce0, i32 inreg %a1.coerce1, i32 inreg %a1.coerce2, i32 inreg %a1.coerce3, i32 signext %a2, i32, i32 inreg %a3.coerce0, i32 inreg %a3.coerce1, i32 inreg %a3.coerce2, i32 inreg %a3.coerce3) local_unnamed_addr [[NUW:#[0-9]+]]
|
||||
// O32: declare i32 @test_v4sf_2(i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 signext, i32, i32 inreg, i32 inreg, i32 inreg, i32 inreg)
|
||||
// N64: define void @test_v4sf(i64 inreg %a1.coerce0, i64 inreg %a1.coerce1, i32 signext %a2, i64, i64 inreg %a3.coerce0, i64 inreg %a3.coerce1) [[NUW:#[0-9]+]]
|
||||
// N64: define void @test_v4sf(i64 inreg %a1.coerce0, i64 inreg %a1.coerce1, i32 signext %a2, i64, i64 inreg %a3.coerce0, i64 inreg %a3.coerce1) local_unnamed_addr [[NUW:#[0-9]+]]
|
||||
// N64: declare i32 @test_v4sf_2(i64 inreg, i64 inreg, i32 signext, i64, i64 inreg, i64 inreg)
|
||||
extern test_v4sf_2(v4sf, int, v4sf);
|
||||
void test_v4sf(v4sf a1, int a2, v4sf a3) {
|
||||
test_v4sf_2(a3, a2, a1);
|
||||
}
|
||||
|
||||
// O32: define void @test_v4i32(i32 inreg %a1.coerce0, i32 inreg %a1.coerce1, i32 inreg %a1.coerce2, i32 inreg %a1.coerce3, i32 signext %a2, i32, i32 inreg %a3.coerce0, i32 inreg %a3.coerce1, i32 inreg %a3.coerce2, i32 inreg %a3.coerce3) [[NUW]]
|
||||
// O32: define void @test_v4i32(i32 inreg %a1.coerce0, i32 inreg %a1.coerce1, i32 inreg %a1.coerce2, i32 inreg %a1.coerce3, i32 signext %a2, i32, i32 inreg %a3.coerce0, i32 inreg %a3.coerce1, i32 inreg %a3.coerce2, i32 inreg %a3.coerce3) local_unnamed_addr [[NUW]]
|
||||
// O32: declare i32 @test_v4i32_2(i32 inreg, i32 inreg, i32 inreg, i32 inreg, i32 signext, i32, i32 inreg, i32 inreg, i32 inreg, i32 inreg)
|
||||
// N64: define void @test_v4i32(i64 inreg %a1.coerce0, i64 inreg %a1.coerce1, i32 signext %a2, i64, i64 inreg %a3.coerce0, i64 inreg %a3.coerce1) [[NUW]]
|
||||
// N64: define void @test_v4i32(i64 inreg %a1.coerce0, i64 inreg %a1.coerce1, i32 signext %a2, i64, i64 inreg %a3.coerce0, i64 inreg %a3.coerce1) local_unnamed_addr [[NUW]]
|
||||
// N64: declare i32 @test_v4i32_2(i64 inreg, i64 inreg, i32 signext, i64, i64 inreg, i64 inreg)
|
||||
extern test_v4i32_2(v4i32, int, v4i32);
|
||||
void test_v4i32(v4i32 a1, int a2, v4i32 a3) {
|
||||
|
|
|
@ -23,32 +23,32 @@ struct __attribute__((packed)) s3 {
|
|||
unsigned int z;
|
||||
};
|
||||
|
||||
// CHECK: @align0 = global i32 1
|
||||
// CHECK: @align0 = local_unnamed_addr global i32 1
|
||||
int align0 = __alignof(struct s0);
|
||||
// CHECK: @align1 = global i32 4
|
||||
// CHECK: @align1 = local_unnamed_addr global i32 4
|
||||
int align1 = __alignof(struct s1);
|
||||
// CHECK: @align2 = global i32 1
|
||||
// CHECK: @align2 = local_unnamed_addr global i32 1
|
||||
int align2 = __alignof(struct s2);
|
||||
// CHECK: @align3 = global i32 1
|
||||
// CHECK: @align3 = local_unnamed_addr global i32 1
|
||||
int align3 = __alignof(struct s3);
|
||||
|
||||
// CHECK: @align0_x = global i32 1
|
||||
// CHECK: @align0_x = local_unnamed_addr global i32 1
|
||||
int align0_x = __alignof(((struct s0*) 0)->x);
|
||||
//
|
||||
// CHECK: @align1_x = global i32 1
|
||||
// CHECK: @align1_x = local_unnamed_addr global i32 1
|
||||
int align1_x = __alignof(((struct s1*) 0)->x);
|
||||
// CHECK: @align2_x = global i32 1
|
||||
// CHECK: @align2_x = local_unnamed_addr global i32 1
|
||||
int align2_x = __alignof(((struct s2*) 0)->x);
|
||||
// CHECK: @align3_x = global i32 1
|
||||
// CHECK: @align3_x = local_unnamed_addr global i32 1
|
||||
int align3_x = __alignof(((struct s3*) 0)->x);
|
||||
|
||||
// CHECK: @align0_x0 = global i32 4
|
||||
// CHECK: @align0_x0 = local_unnamed_addr global i32 4
|
||||
int align0_x0 = __alignof(((struct s0*) 0)->x[0]);
|
||||
// CHECK: @align1_x0 = global i32 4
|
||||
// CHECK: @align1_x0 = local_unnamed_addr global i32 4
|
||||
int align1_x0 = __alignof(((struct s1*) 0)->x[0]);
|
||||
// CHECK: @align2_x0 = global i32 4
|
||||
// CHECK: @align2_x0 = local_unnamed_addr global i32 4
|
||||
int align2_x0 = __alignof(((struct s2*) 0)->x[0]);
|
||||
// CHECK: @align3_x0 = global i32 4
|
||||
// CHECK: @align3_x0 = local_unnamed_addr global i32 4
|
||||
int align3_x0 = __alignof(((struct s3*) 0)->x[0]);
|
||||
|
||||
// CHECK-LABEL: define i32 @f0_a
|
||||
|
|
|
@ -11,12 +11,12 @@
|
|||
// Android uses fp128 for long double but other x86_64 targets use x86_fp80.
|
||||
|
||||
long double dataLD = 1.0L;
|
||||
// ANDROID: @dataLD = global fp128 0xL00000000000000003FFF000000000000, align 16
|
||||
// GNU: @dataLD = global x86_fp80 0xK3FFF8000000000000000, align 16
|
||||
// ANDROID: @dataLD = local_unnamed_addr global fp128 0xL00000000000000003FFF000000000000, align 16
|
||||
// GNU: @dataLD = local_unnamed_addr global x86_fp80 0xK3FFF8000000000000000, align 16
|
||||
|
||||
long double _Complex dataLDC = {1.0L, 1.0L};
|
||||
// ANDROID: @dataLDC = global { fp128, fp128 } { fp128 0xL00000000000000003FFF000000000000, fp128 0xL00000000000000003FFF000000000000 }, align 16
|
||||
// GNU: @dataLDC = global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 16
|
||||
// ANDROID: @dataLDC = local_unnamed_addr global { fp128, fp128 } { fp128 0xL00000000000000003FFF000000000000, fp128 0xL00000000000000003FFF000000000000 }, align 16
|
||||
// GNU: @dataLDC = local_unnamed_addr global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 16
|
||||
|
||||
long double TestLD(long double x) {
|
||||
return x * x;
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
// RUN: %clang_cc1 %s -emit-llvm -O1 -o - -triple=i686-apple-darwin9 -std=c++11 | FileCheck %s
|
||||
|
||||
// CHECK-DAG: @PR22043 = global i32 0, align 4
|
||||
// CHECK-DAG: @PR22043 = local_unnamed_addr global i32 0, align 4
|
||||
typedef _Atomic(int) AtomicInt;
|
||||
AtomicInt PR22043 = AtomicInt();
|
||||
|
||||
// CHECK-DAG: @_ZN7PR180978constant1aE = global { i16, i8 } { i16 1, i8 6 }, align 4
|
||||
// CHECK-DAG: @_ZN7PR180978constant1bE = global { i16, i8 } { i16 2, i8 6 }, align 4
|
||||
// CHECK-DAG: @_ZN7PR180978constant1cE = global { i16, i8 } { i16 3, i8 6 }, align 4
|
||||
// CHECK-DAG: @_ZN7PR180978constant1yE = global { { i16, i8 }, i32 } { { i16, i8 } { i16 4, i8 6 }, i32 5 }, align 4
|
||||
// CHECK-DAG: @_ZN7PR180978constant1aE = local_unnamed_addr global { i16, i8 } { i16 1, i8 6 }, align 4
|
||||
// CHECK-DAG: @_ZN7PR180978constant1bE = local_unnamed_addr global { i16, i8 } { i16 2, i8 6 }, align 4
|
||||
// CHECK-DAG: @_ZN7PR180978constant1cE = local_unnamed_addr global { i16, i8 } { i16 3, i8 6 }, align 4
|
||||
// CHECK-DAG: @_ZN7PR180978constant1yE = local_unnamed_addr global { { i16, i8 }, i32 } { { i16, i8 } { i16 4, i8 6 }, i32 5 }, align 4
|
||||
|
||||
struct A {
|
||||
_Atomic(int) i;
|
||||
|
|
|
@ -8,4 +8,4 @@ struct A { int a; A() { y = ((size_t)this - (size_t)&x) / sizeof(void*); } };
|
|||
struct B : virtual A { void* x; };
|
||||
B x;
|
||||
|
||||
// CHECK: @y = global i8 2
|
||||
// CHECK: @y = local_unnamed_addr global i8 2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 %s -ffake-address-space-map -emit-llvm -o - | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -cl-opt-disable -ffake-address-space-map -emit-llvm -o - | FileCheck %s
|
||||
|
||||
// CHECK: @array = addrspace({{[0-9]+}}) constant
|
||||
__constant float array[2] = {0.0f, 1.0f};
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// bits before evaluating. Test this both for variables and constants
|
||||
// evaluated in the front-end.
|
||||
|
||||
// OPT: @gtest1 = constant i64 2147483648
|
||||
// OPT: @gtest1 = local_unnamed_addr constant i64 2147483648
|
||||
__constant const unsigned long gtest1 = 1UL << 31;
|
||||
|
||||
// NOOPT: @negativeShift32
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 %s -emit-llvm -o - -ffake-address-space-map | FileCheck %s
|
||||
// RUN: %clang_cc1 %s -cl-opt-disable -emit-llvm -o - -ffake-address-space-map | FileCheck %s
|
||||
|
||||
__constant char * __constant x = "hello world";
|
||||
__constant char * __constant y = "hello world";
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -emit-llvm -ffake-address-space-map %s -o - -verify | FileCheck %s
|
||||
// RUN: %clang_cc1 -x cl -cl-opt-disable -cl-std=CL1.2 -emit-llvm -ffake-address-space-map %s -o - -verify | FileCheck %s
|
||||
// expected-no-diagnostics
|
||||
|
||||
// CHECK: @foo = external addrspace(3) constant float
|
||||
|
|
Loading…
Reference in New Issue