r324499 - Don't pass ForDefinition_t in places it is redundant.
Author: rafael Date: Wed Feb 7 11:04:41 2018 New Revision: 324499 URL: http://llvm.org/viewvc/llvm-project?rev=324499&view=rev Log: Don't pass ForDefinition_t in places it is redundant. I found this while looking at the ppc failures caused by the dso_local change. The issue was that the patch would produce the wrong answer for available_externally. Having ForDefinition_t available in places where the code can just check the linkage is a bit of a foot gun. This patch removes the ForDefiniton_t argument in places where the linkage is already know. Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp cfe/trunk/lib/CodeGen/CGVTT.cpp cfe/trunk/lib/CodeGen/CGVTables.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/lib/CodeGen/TargetInfo.cpp cfe/trunk/lib/CodeGen/TargetInfo.h Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324499&r1=324498&r2=324499&view=diff == --- cfe/trunk/lib/CodeGen/CGDecl.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb 7 11:04:41 2018 @@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name, nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS); GV->setAlignment(getContext().getDeclAlign(&D).getQuantity()); - setGlobalVisibility(GV, &D, ForDefinition); + setGlobalVisibility(GV, &D); if (supportsCOMDAT() && GV->isWeakForLinker()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324499&r1=324498&r2=324499&view=diff == --- cfe/trunk/lib/CodeGen/CGVTT.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb 7 11:04:41 2018 @@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm:: VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName())); // Set the right visibility. - CGM.setGlobalVisibility(VTT, RD, ForDefinition); + CGM.setGlobalVisibility(VTT, RD); } llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324499&r1=324498&r2=324499&view=diff == --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb 7 11:04:41 2018 @@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD, const ThunkInfo &Thunk, llvm::Function *Fn) { - CGM.setGlobalVisibility(Fn, MD, ForDefinition); + CGM.setGlobalVisibility(Fn, MD); } static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk, @@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab // Create the variable that will hold the construction vtable. llvm::GlobalVariable *VTable = CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage); - CGM.setGlobalVisibility(VTable, RD, ForDefinition); + CGM.setGlobalVisibility(VTable, RD); // V-tables are always unnamed_addr. VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324499&r1=324498&r2=324499&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 7 11:04:41 2018 @@ -700,8 +700,7 @@ llvm::ConstantInt *CodeGenModule::getSiz } void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV, -const NamedDecl *D, -ForDefinition_t IsForDefinition) const { +const NamedDecl *D) const { if (GV->hasDLLImportStorageClass()) return; // Internal definitions always have default visibility. @@ -712,8 +711,7 @@ void CodeGenModule::setGlobalVisibility( // Set visibility for definitions. LinkageInfo LV = D->getLinkageAndVisibility(); - if (LV.isVisibilityExplicit() || - (IsForDefinition && !GV->hasAvailableExternallyLinkage())) + if (LV.isVisibilityExplicit() || !GV->isDeclarationForLinker()) GV->setVisibility(GetLLVMVisibility(LV.getVisibility())); } @@ -1174,7 +1172,7 @@ void CodeGenModule::SetLLVMFunctionAttri void CodeGenModule::SetCommonAttributes(const Decl *D, llvm::GlobalValue *GV) { if (const auto *ND = dyn_cas
r324500 - Recommit r324107.
Author: rafael Date: Wed Feb 7 11:16:49 2018 New Revision: 324500 URL: http://llvm.org/viewvc/llvm-project?rev=324500&view=rev Log: Recommit r324107. It now includes a fix to not mark available_externally definitions as dso_local. Original message: Start setting dso_local in clang. This starts adding dso_local to clang. The hope is to eventually have TargetMachine::shouldAssumeDsoLocal go away. My objective for now is to move enough of it to clang to remove the need for the TargetMachine one to handle PIE copy relocations and -fno-plt. With that it should then be easy to implement a -fno-copy-reloc in clang. This patch just adds the cases where we assume a symbol to be local based on the file being compiled for an executable or a shared library. Added: cfe/trunk/test/CodeGen/dso-local-executable.c cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp cfe/trunk/lib/CodeGen/CGVTT.cpp cfe/trunk/lib/CodeGen/CGVTables.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGen/mbackchain-2.c cfe/trunk/test/CodeGen/mbackchain-3.c cfe/trunk/test/CodeGen/mips-vector-return.c cfe/trunk/test/CodeGen/split-stacks.c cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp cfe/trunk/test/CodeGenCXX/debug-info-template.cpp cfe/trunk/test/CodeGenCXX/float16-declarations.cpp cfe/trunk/test/CodeGenCXX/split-stacks.cpp cfe/trunk/test/Driver/lanai-unknown-unknown.cpp cfe/trunk/test/Driver/le32-unknown-nacl.cpp cfe/trunk/test/Driver/le64-unknown-unknown.cpp cfe/trunk/test/Driver/riscv32-toolchain.c cfe/trunk/test/Driver/riscv64-toolchain.c cfe/trunk/test/Frontend/ast-codegen.c Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324500&r1=324499&r2=324500&view=diff == --- cfe/trunk/lib/CodeGen/CGDecl.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb 7 11:16:49 2018 @@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name, nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS); GV->setAlignment(getContext().getDeclAlign(&D).getQuantity()); - setGlobalVisibility(GV, &D); + setGVProperties(GV, &D); if (supportsCOMDAT() && GV->isWeakForLinker()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); @@ -344,6 +344,7 @@ CodeGenFunction::AddInitializerToStaticV OldGV->getThreadLocalMode(), CGM.getContext().getTargetAddressSpace(D.getType())); GV->setVisibility(OldGV->getVisibility()); +GV->setDSOLocal(OldGV->isDSOLocal()); GV->setComdat(OldGV->getComdat()); // Steal the name of the old global Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324500&r1=324499&r2=324500&view=diff == --- cfe/trunk/lib/CodeGen/CGVTT.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb 7 11:16:49 2018 @@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm:: VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName())); // Set the right visibility. - CGM.setGlobalVisibility(VTT, RD); + CGM.setGVProperties(VTT, RD); } llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324500&r1=324499&r2=324500&view=diff == --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb 7 11:16:49 2018 @@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD, const ThunkInfo &Thunk, llvm::Function *Fn) { - CGM.setGlobalVisibility(Fn, MD); + CGM.setGVProperties(Fn, MD); } static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk, @@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab // Create the variable that will hold the construction vtable. llvm::GlobalVariable *VTable = CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage); - CGM.setGlobalVisibility(VTable, RD); + CGM.setGVProperties(VTable, RD); // V-tables are always unnamed_addr. VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324500&r1=324499&r2=324500&view=diff ==
r324505 - Revert "Recommit r324107."
Author: rafael Date: Wed Feb 7 11:44:15 2018 New Revision: 324505 URL: http://llvm.org/viewvc/llvm-project?rev=324505&view=rev Log: Revert "Recommit r324107." This reverts commit r324500. The bots found two failures: ThreadSanitizer-x86_64 :: Linux/pie_no_aslr.cc ThreadSanitizer-x86_64 :: pie_test.cc when using gold. The issue is a limitation in gold when building pie binaries. I will investigate how to work around it. Removed: cfe/trunk/test/CodeGen/dso-local-executable.c cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp cfe/trunk/lib/CodeGen/CGVTT.cpp cfe/trunk/lib/CodeGen/CGVTables.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGen/mbackchain-2.c cfe/trunk/test/CodeGen/mbackchain-3.c cfe/trunk/test/CodeGen/mips-vector-return.c cfe/trunk/test/CodeGen/split-stacks.c cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp cfe/trunk/test/CodeGenCXX/debug-info-template.cpp cfe/trunk/test/CodeGenCXX/float16-declarations.cpp cfe/trunk/test/CodeGenCXX/split-stacks.cpp cfe/trunk/test/Driver/lanai-unknown-unknown.cpp cfe/trunk/test/Driver/le32-unknown-nacl.cpp cfe/trunk/test/Driver/le64-unknown-unknown.cpp cfe/trunk/test/Driver/riscv32-toolchain.c cfe/trunk/test/Driver/riscv64-toolchain.c cfe/trunk/test/Frontend/ast-codegen.c Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324505&r1=324504&r2=324505&view=diff == --- cfe/trunk/lib/CodeGen/CGDecl.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb 7 11:44:15 2018 @@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name, nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS); GV->setAlignment(getContext().getDeclAlign(&D).getQuantity()); - setGVProperties(GV, &D); + setGlobalVisibility(GV, &D); if (supportsCOMDAT() && GV->isWeakForLinker()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); @@ -344,7 +344,6 @@ CodeGenFunction::AddInitializerToStaticV OldGV->getThreadLocalMode(), CGM.getContext().getTargetAddressSpace(D.getType())); GV->setVisibility(OldGV->getVisibility()); -GV->setDSOLocal(OldGV->isDSOLocal()); GV->setComdat(OldGV->getComdat()); // Steal the name of the old global Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324505&r1=324504&r2=324505&view=diff == --- cfe/trunk/lib/CodeGen/CGVTT.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb 7 11:44:15 2018 @@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm:: VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName())); // Set the right visibility. - CGM.setGVProperties(VTT, RD); + CGM.setGlobalVisibility(VTT, RD); } llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324505&r1=324504&r2=324505&view=diff == --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb 7 11:44:15 2018 @@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD, const ThunkInfo &Thunk, llvm::Function *Fn) { - CGM.setGVProperties(Fn, MD); + CGM.setGlobalVisibility(Fn, MD); } static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk, @@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab // Create the variable that will hold the construction vtable. llvm::GlobalVariable *VTable = CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage); - CGM.setGVProperties(VTable, RD); + CGM.setGlobalVisibility(VTable, RD); // V-tables are always unnamed_addr. VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324505&r1=324504&r2=324505&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 7 11:44:15 2018 @@ -715,62 +715,6 @@ void CodeGenModule::setGlobalVisibility( GV->setVisibility(GetLLVMVisibility(LV.getVisibility())); } -static bool shouldAssumeDSOLocal(
r324535 - Recommit r324107 again.
Author: rafael Date: Wed Feb 7 14:15:33 2018 New Revision: 324535 URL: http://llvm.org/viewvc/llvm-project?rev=324535&view=rev Log: Recommit r324107 again. The difference from the previous try is that we no longer directly access function declarations from position independent executables. It should work, but currently doesn't with some linkers. It now includes a fix to not mark available_externally definitions as dso_local. Original message: Start setting dso_local in clang. This starts adding dso_local to clang. The hope is to eventually have TargetMachine::shouldAssumeDsoLocal go away. My objective for now is to move enough of it to clang to remove the need for the TargetMachine one to handle PIE copy relocations and -fno-plt. With that it should then be easy to implement a -fno-copy-reloc in clang. This patch just adds the cases where we assume a symbol to be local based on the file being compiled for an executable or a shared library. Added: cfe/trunk/test/CodeGen/dso-local-executable.c cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp cfe/trunk/lib/CodeGen/CGVTT.cpp cfe/trunk/lib/CodeGen/CGVTables.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGen/mbackchain-2.c cfe/trunk/test/CodeGen/mbackchain-3.c cfe/trunk/test/CodeGen/mips-vector-return.c cfe/trunk/test/CodeGen/split-stacks.c cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp cfe/trunk/test/CodeGenCXX/debug-info-template.cpp cfe/trunk/test/CodeGenCXX/float16-declarations.cpp cfe/trunk/test/CodeGenCXX/split-stacks.cpp cfe/trunk/test/Driver/lanai-unknown-unknown.cpp cfe/trunk/test/Driver/le32-unknown-nacl.cpp cfe/trunk/test/Driver/le64-unknown-unknown.cpp cfe/trunk/test/Driver/riscv32-toolchain.c cfe/trunk/test/Driver/riscv64-toolchain.c cfe/trunk/test/Frontend/ast-codegen.c Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324535&r1=324534&r2=324535&view=diff == --- cfe/trunk/lib/CodeGen/CGDecl.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb 7 14:15:33 2018 @@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name, nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS); GV->setAlignment(getContext().getDeclAlign(&D).getQuantity()); - setGlobalVisibility(GV, &D); + setGVProperties(GV, &D); if (supportsCOMDAT() && GV->isWeakForLinker()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); @@ -344,6 +344,7 @@ CodeGenFunction::AddInitializerToStaticV OldGV->getThreadLocalMode(), CGM.getContext().getTargetAddressSpace(D.getType())); GV->setVisibility(OldGV->getVisibility()); +GV->setDSOLocal(OldGV->isDSOLocal()); GV->setComdat(OldGV->getComdat()); // Steal the name of the old global Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324535&r1=324534&r2=324535&view=diff == --- cfe/trunk/lib/CodeGen/CGVTT.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTT.cpp Wed Feb 7 14:15:33 2018 @@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm:: VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName())); // Set the right visibility. - CGM.setGlobalVisibility(VTT, RD); + CGM.setGVProperties(VTT, RD); } llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324535&r1=324534&r2=324535&view=diff == --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Wed Feb 7 14:15:33 2018 @@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD, const ThunkInfo &Thunk, llvm::Function *Fn) { - CGM.setGlobalVisibility(Fn, MD); + CGM.setGVProperties(Fn, MD); } static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk, @@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab // Create the variable that will hold the construction vtable. llvm::GlobalVariable *VTable = CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage); - CGM.setGlobalVisibility(VTable, RD); + CGM.setGVProperties(VTable, RD); // V-tables are always unnamed_addr. VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); Modified: cfe/tr
r324539 - Don't try to use copy relocations with tls variables.
Author: rafael Date: Wed Feb 7 15:04:06 2018 New Revision: 324539 URL: http://llvm.org/viewvc/llvm-project?rev=324539&view=rev Log: Don't try to use copy relocations with tls variables. Should fix the lldb bot. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGen/dso-local-executable.c Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324539&r1=324538&r2=324539&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 7 15:04:06 2018 @@ -746,9 +746,10 @@ static bool shouldAssumeDSOLocal(const C return false; // If we can use copy relocations we can assume it is local. - if (isa(D) && - (RM == llvm::Reloc::Static || CGOpts.PIECopyRelocations)) -return true; + if (auto *VD = dyn_cast(D)) +if (VD->getTLSKind() == VarDecl::TLS_None && +(RM == llvm::Reloc::Static || CGOpts.PIECopyRelocations)) + return true; // If we can use a plt entry as the symbol address we can assume it // is local. Modified: cfe/trunk/test/CodeGen/dso-local-executable.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/dso-local-executable.c?rev=324539&r1=324538&r2=324539&view=diff == --- cfe/trunk/test/CodeGen/dso-local-executable.c (original) +++ cfe/trunk/test/CodeGen/dso-local-executable.c Wed Feb 7 15:04:06 2018 @@ -4,6 +4,8 @@ // STATIC-DAG: declare dso_local void @foo() // STATIC-DAG: @baz = dso_local global i32 42 // STATIC-DAG: define dso_local i32* @zed() +// STATIC-DAG: @thread_var = external thread_local global i32 +// STATIC-DAG: @local_thread_var = dso_local thread_local global i32 42 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie -mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY %s // PIE-COPY-DAG: @bar = external dso_local global i32 @@ -11,6 +13,8 @@ // PIE-COPY-DAG: declare void @foo() // PIE-COPY-DAG: @baz = dso_local global i32 42 // PIE-COPY-DAG: define dso_local i32* @zed() +// PIE-COPY-DAG: @thread_var = external thread_local global i32 +// PIE-COPY-DAG: @local_thread_var = dso_local thread_local global i32 42 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie %s -o - | FileCheck --check-prefix=PIE %s // PIE-DAG: @bar = external global i32 @@ -18,6 +22,8 @@ // PIE-DAG: declare void @foo() // PIE-DAG: @baz = dso_local global i32 42 // PIE-DAG: define dso_local i32* @zed() +// PIE-DAG: @thread_var = external thread_local global i32 +// PIE-DAG: @local_thread_var = dso_local thread_local global i32 42 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -mrelocation-model static -fno-plt %s -o - | FileCheck --check-prefix=NOPLT %s // NOPLT-DAG: @bar = external dso_local global i32 @@ -25,6 +31,8 @@ // NOPLT-DAG: declare void @foo() // NOPLT-DAG: @baz = dso_local global i32 42 // NOPLT-DAG: define dso_local i32* @zed() +// NOPLT-DAG: @thread_var = external thread_local global i32 +// NOPLT-DAG: @local_thread_var = dso_local thread_local global i32 42 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -fno-plt -pic-is-pie -mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY-NOPLT %s // PIE-COPY-NOPLT-DAG: @bar = external dso_local global i32 @@ -32,6 +40,8 @@ // PIE-COPY-NOPLT-DAG: declare void @foo() // PIE-COPY-NOPLT-DAG: @baz = dso_local global i32 42 // PIE-COPY-NOPLT-DAG: define dso_local i32* @zed() +// PIE-COPY-NOPLT-DAG: @thread_var = external thread_local global i32 +// PIE-COPY-NOPLT-DAG: @local_thread_var = dso_local thread_local global i32 42 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie -fno-plt %s -o - | FileCheck --check-prefix=PIE-NO-PLT %s // RUN: %clang_cc1 -triple powerpc64le-pc-linux -emit-llvm -mrelocation-model static %s -o - | FileCheck --check-prefix=PIE-NO-PLT %s @@ -40,6 +50,8 @@ // PIE-NO-PLT-DAG: declare void @foo() // PIE-NO-PLT-DAG: @baz = dso_local global i32 42 // PIE-NO-PLT-DAG: define dso_local i32* @zed() +// PIE-NO-PLT-DAG: @thread_var = external thread_local global i32 +// PIE-NO-PLT-DAG: @local_thread_var = dso_local thread_local global i32 42 // RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm %s -o - | FileCheck --check-prefix=SHARED %s // SHARED-DAG: @bar = external global i32 @@ -47,6 +59,8 @@ // SHARED-DAG: declare void @foo() // SHARED-DAG: @baz = global i32 42 // SHARED-DAG: define i32* @zed() +// SHARED-DAG: @thread_var = external thread_local global i32 +// SHARED-DAG: @local_thread_var = thread_local global i32 42 extern int bar; __attribute__((weak)) extern int weak_bar; @@ -57,3 +71,9 @@ int *zed() { foo(); return baz ? &weak_bar : &bar; } + +extern __thread int thread_var; +__thread int local_thread_var = 42; +int *get_thread_var(
r324552 - Add a testcase for PR36268.
Author: rafael Date: Wed Feb 7 17:17:26 2018 New Revision: 324552 URL: http://llvm.org/viewvc/llvm-project?rev=324552&view=rev Log: Add a testcase for PR36268. Added: cfe/trunk/test/CodeGenObjC/availability-dso-local.m Added: cfe/trunk/test/CodeGenObjC/availability-dso-local.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/availability-dso-local.m?rev=324552&view=auto == --- cfe/trunk/test/CodeGenObjC/availability-dso-local.m (added) +++ cfe/trunk/test/CodeGenObjC/availability-dso-local.m Wed Feb 7 17:17:26 2018 @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 -triple thumbv7-apple-ios10.0.0 -emit-llvm -fvisibility hidden -w %s -o - | FileCheck %s + +// CHECK: @"OBJC_CLASS_$_a" = hidden global %struct._class_t + +__attribute__((availability(ios, introduced = 11.0))) @interface a @end +@implementation a @end ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r325156 - Update for llvm change. NFC.
Author: rafael Date: Wed Feb 14 11:11:37 2018 New Revision: 325156 URL: http://llvm.org/viewvc/llvm-project?rev=325156&view=rev Log: Update for llvm change. NFC. Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=325156&r1=325155&r2=325156&view=diff == --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed Feb 14 11:11:37 2018 @@ -1122,7 +1122,7 @@ static void runThinLTOBackend(ModuleSumm break; case Backend_EmitBC: Conf.PreCodeGenModuleHook = [&](size_t Task, const Module &Mod) { - WriteBitcodeToFile(M, *OS, CGOpts.EmitLLVMUseLists); + WriteBitcodeToFile(*M, *OS, CGOpts.EmitLLVMUseLists); return false; }; break; @@ -1252,7 +1252,7 @@ void clang::EmbedBitcode(llvm::Module *M // If the input is LLVM Assembly, bitcode is produced by serializing // the module. Use-lists order need to be perserved in this case. llvm::raw_string_ostream OS(Data); - llvm::WriteBitcodeToFile(M, OS, /* ShouldPreserveUseListOrder */ true); + llvm::WriteBitcodeToFile(*M, OS, /* ShouldPreserveUseListOrder */ true); ModuleData = ArrayRef((const uint8_t *)OS.str().data(), OS.str().size()); } else Modified: cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp?rev=325156&r1=325155&r2=325156&view=diff == --- cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp (original) +++ cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp Wed Feb 14 11:11:37 2018 @@ -563,7 +563,7 @@ public: errs() << "error: unable to open temporary file.\n"; return true; } -WriteBitcodeToFile(AuxModule.get(), BitcodeFile); +WriteBitcodeToFile(*AuxModule, BitcodeFile); } bool Failed = sys::ExecuteAndWait(ClangBinary.get(), ClangArgs); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r325846 - Simplify setting dso_local. NFC.
Author: rafael Date: Thu Feb 22 16:22:15 2018 New Revision: 325846 URL: http://llvm.org/viewvc/llvm-project?rev=325846&view=rev Log: Simplify setting dso_local. NFC. The value of dso_local can be computed from just IR properties and global information (object file type, command line options, etc). With this patch we no longer pass in the Decl. It was almost unused and making it fully unused guarantees that dso_local is consistent with the rest of the IR. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=325846&r1=325845&r2=325846&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Feb 22 16:22:15 2018 @@ -712,7 +712,7 @@ void CodeGenModule::setGlobalVisibility( } static bool shouldAssumeDSOLocal(const CodeGenModule &CGM, - llvm::GlobalValue *GV, const NamedDecl *D) { + llvm::GlobalValue *GV) { const llvm::Triple &TT = CGM.getTriple(); // Only handle ELF for now. if (!TT.isOSBinFormatELF()) @@ -742,31 +742,30 @@ static bool shouldAssumeDSOLocal(const C return false; // If we can use copy relocations we can assume it is local. - if (auto *VD = dyn_cast(D)) -if (VD->getTLSKind() == VarDecl::TLS_None && + if (auto *Var = dyn_cast(GV)) +if (!Var->isThreadLocal() && (RM == llvm::Reloc::Static || CGOpts.PIECopyRelocations)) return true; // If we can use a plt entry as the symbol address we can assume it // is local. // FIXME: This should work for PIE, but the gold linker doesn't support it. - if (isa(D) && !CGOpts.NoPLT && RM == llvm::Reloc::Static) + if (isa(GV) && !CGOpts.NoPLT && RM == llvm::Reloc::Static) return true; // Otherwise don't assue it is local. return false; } -void CodeGenModule::setDSOLocal(llvm::GlobalValue *GV, -const NamedDecl *D) const { - if (shouldAssumeDSOLocal(*this, GV, D)) +void CodeGenModule::setDSOLocal(llvm::GlobalValue *GV) const { + if (shouldAssumeDSOLocal(*this, GV)) GV->setDSOLocal(true); } void CodeGenModule::setGVProperties(llvm::GlobalValue *GV, const NamedDecl *D) const { setGlobalVisibility(GV, D); - setDSOLocal(GV, D); + setDSOLocal(GV); } static llvm::GlobalVariable::ThreadLocalMode GetLLVMTLSModel(StringRef S) { @@ -2749,7 +2748,6 @@ CodeGenModule::GetOrCreateLLVMGlobal(Str GV->setAlignment(getContext().getDeclAlign(D).getQuantity()); setLinkageForGV(GV, D); -setGVProperties(GV, D); if (D->getTLSKind()) { if (D->getTLSKind() == VarDecl::TLS_Dynamic) @@ -2757,6 +2755,8 @@ CodeGenModule::GetOrCreateLLVMGlobal(Str setTLSMode(GV, *D); } +setGVProperties(GV, D); + // If required by the ABI, treat declarations of static data members with // inline initializers as definitions. if (getContext().isMSStaticDataMemberInlineDefinition(D)) { Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=325846&r1=325845&r2=325846&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Thu Feb 22 16:22:15 2018 @@ -721,7 +721,7 @@ public: /// Set the visibility for the given LLVM GlobalValue. void setGlobalVisibility(llvm::GlobalValue *GV, const NamedDecl *D) const; - void setDSOLocal(llvm::GlobalValue *GV, const NamedDecl *D) const; + void setDSOLocal(llvm::GlobalValue *GV) const; void setGVProperties(llvm::GlobalValue *GV, const NamedDecl *D) const; Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=325846&r1=325845&r2=325846&view=diff == --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Feb 22 16:22:15 2018 @@ -3214,10 +3214,10 @@ llvm::Constant *ItaniumRTTIBuilder::Buil llvmVisibility = CodeGenModule::GetLLVMVisibility(Ty->getVisibility()); TypeName->setVisibility(llvmVisibility); - CGM.setDSOLocal(TypeName, Ty->getAsCXXRecordDecl()); + CGM.setDSOLocal(TypeName); GV->setVisibility(llvmVisibility); - CGM.setDSOLocal(GV, Ty->getAsCXXRecordDecl()); + CGM.setDSOLocal(GV); if (CGM.getTriple().isWindowsItaniumEnvironment()) { auto RD = Ty->getAsCXXRecordDecl(); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cg
r325930 - Convert test to FileCheck. NFC.
Author: rafael Date: Fri Feb 23 10:18:01 2018 New Revision: 325930 URL: http://llvm.org/viewvc/llvm-project?rev=325930&view=rev Log: Convert test to FileCheck. NFC. Modified: cfe/trunk/test/CodeGen/tentative-decls.c Modified: cfe/trunk/test/CodeGen/tentative-decls.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/tentative-decls.c?rev=325930&r1=325929&r2=325930&view=diff == --- cfe/trunk/test/CodeGen/tentative-decls.c (original) +++ cfe/trunk/test/CodeGen/tentative-decls.c Fri Feb 23 10:18:01 2018 @@ -1,16 +1,16 @@ -// RUN: %clang_cc1 -emit-llvm -o %t %s +// RUN: %clang_cc1 -emit-llvm -w -o - %s | FileCheck %s -// RUN: grep '@r = common global \[1 x .*\] zeroinitializer' %t +// CHECK-DAG: @r = common global [1 x {{.*}}] zeroinitializer int r[]; int (*a)[] = &r; struct s0; struct s0 x; -// RUN: grep '@x = common global .struct.s0 zeroinitializer' %t +// CHECK-DAG: @x = common global %struct.s0 zeroinitializer struct s0 y; -// RUN: grep '@y = common global .struct.s0 zeroinitializer' %t +// CHECK-DAG: @y = common global %struct.s0 zeroinitializer struct s0 *f0() { return &y; } @@ -19,19 +19,19 @@ struct s0 { int x; }; -// RUN: grep '@b = common global \[1 x .*\] zeroinitializer' %t +// CHECK-DAG: @b = common global [1 x {{.*}}] zeroinitializer int b[]; int *f1() { return b; } // Check that the most recent tentative definition wins. -// RUN: grep '@c = common global \[4 x .*\] zeroinitializer' %t +// CHECK-DAG: @c = common global [4 x {{.*}}] zeroinitializer int c[]; int c[4]; // Check that we emit static tentative definitions -// RUN: grep '@c5 = internal global \[1 x .*\] zeroinitializer' %t +// CHECK-DAG: @c5 = internal global [1 x {{.*}}] zeroinitializer static int c5[]; static int func() { return c5[0]; } int callfunc() { return func(); } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r325942 - Fix one last test on a windows host.
Author: rafael Date: Fri Feb 23 11:36:20 2018 New Revision: 325942 URL: http://llvm.org/viewvc/llvm-project?rev=325942&view=rev Log: Fix one last test on a windows host. Modified: cfe/trunk/test/CodeGenCUDA/filter-decl.cu Modified: cfe/trunk/test/CodeGenCUDA/filter-decl.cu URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCUDA/filter-decl.cu?rev=325942&r1=325941&r2=325942&view=diff == --- cfe/trunk/test/CodeGenCUDA/filter-decl.cu (original) +++ cfe/trunk/test/CodeGenCUDA/filter-decl.cu Fri Feb 23 11:36:20 2018 @@ -21,7 +21,7 @@ __device__ char devicedata[256]; // CHECK-DEVICE: shareddata = global __shared__ char shareddata[256]; -// CHECK-HOST: hostdata = global +// CHECK-HOST: hostdata = {{(dso_local )?}}global // CHECK-DEVICE-NOT: hostdata = global char hostdata[256]; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r325943 - Really fix test on windows.
Author: rafael Date: Fri Feb 23 11:38:41 2018 New Revision: 325943 URL: http://llvm.org/viewvc/llvm-project?rev=325943&view=rev Log: Really fix test on windows. Sorry for the noise. Modified: cfe/trunk/test/CodeGenCUDA/filter-decl.cu Modified: cfe/trunk/test/CodeGenCUDA/filter-decl.cu URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCUDA/filter-decl.cu?rev=325943&r1=325942&r2=325943&view=diff == --- cfe/trunk/test/CodeGenCUDA/filter-decl.cu (original) +++ cfe/trunk/test/CodeGenCUDA/filter-decl.cu Fri Feb 23 11:38:41 2018 @@ -10,15 +10,15 @@ __asm__("file scope asm is host only"); // CHECK-HOST: constantdata = internal global -// CHECK-DEVICE: constantdata = externally_initialized global +// CHECK-DEVICE: constantdata = {{(dso_local )?}}externally_initialized global __constant__ char constantdata[256]; // CHECK-HOST: devicedata = internal global -// CHECK-DEVICE: devicedata = externally_initialized global +// CHECK-DEVICE: devicedata = {{(dso_local )?}}externally_initialized global __device__ char devicedata[256]; // CHECK-HOST: shareddata = internal global -// CHECK-DEVICE: shareddata = global +// CHECK-DEVICE: shareddata = {{(dso_local )?}}global __shared__ char shareddata[256]; // CHECK-HOST: hostdata = {{(dso_local )?}}global ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326265 - Pass a GlobalDecl to setFunctionDefinitionAttributes. NFC.
Author: rafael Date: Tue Feb 27 15:44:36 2018 New Revision: 326265 URL: http://llvm.org/viewvc/llvm-project?rev=326265&view=rev Log: Pass a GlobalDecl to setFunctionDefinitionAttributes. NFC. This just makes a followup patch easier to read. Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326265&r1=326264&r2=326265&view=diff == --- cfe/trunk/lib/CodeGen/CGCXX.cpp (original) +++ cfe/trunk/lib/CodeGen/CGCXX.cpp Tue Feb 27 15:44:36 2018 @@ -230,7 +230,7 @@ llvm::Function *CodeGenModule::codegenCX setFunctionDLLStorageClass(GD, Fn); CodeGenFunction(*this).GenerateCode(GD, Fn, FnInfo); - setFunctionDefinitionAttributes(MD, Fn); + setFunctionDefinitionAttributes(GD, Fn); SetLLVMFunctionAttributesForDefinition(MD, Fn); return Fn; } Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326265&r1=326264&r2=326265&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Feb 27 15:44:36 2018 @@ -1080,9 +1080,9 @@ llvm::ConstantInt *CodeGenModule::Create return llvm::ConstantInt::get(Int64Ty, llvm::MD5Hash(MDS->getString())); } -void CodeGenModule::setFunctionDefinitionAttributes(const FunctionDecl *D, +void CodeGenModule::setFunctionDefinitionAttributes(GlobalDecl GD, llvm::Function *F) { - setNonAliasAttributes(D, F); + setNonAliasAttributes(GD.getDecl(), F); } void CodeGenModule::SetLLVMFunctionAttributes(const Decl *D, @@ -3591,7 +3591,7 @@ void CodeGenModule::EmitGlobalFunctionDe CodeGenFunction(*this).GenerateCode(D, Fn, FI); - setFunctionDefinitionAttributes(D, Fn); + setFunctionDefinitionAttributes(GD, Fn); SetLLVMFunctionAttributesForDefinition(D, Fn); if (const ConstructorAttr *CA = D->getAttr()) Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326265&r1=326264&r2=326265&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Tue Feb 27 15:44:36 2018 @@ -1183,8 +1183,7 @@ public: bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D); /// Set attributes for a global definition. - void setFunctionDefinitionAttributes(const FunctionDecl *D, - llvm::Function *F); + void setFunctionDefinitionAttributes(GlobalDecl GD, llvm::Function *F); llvm::GlobalValue *GetGlobalValue(StringRef Ref); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326270 - Pass a GlobalDecl to setAliasAttributes. NFC.
Author: rafael Date: Tue Feb 27 16:06:01 2018 New Revision: 326270 URL: http://llvm.org/viewvc/llvm-project?rev=326270&view=rev Log: Pass a GlobalDecl to setAliasAttributes. NFC. This just makes a followup change easier to read. Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326270&r1=326269&r2=326270&view=diff == --- cfe/trunk/lib/CodeGen/CGCXX.cpp (original) +++ cfe/trunk/lib/CodeGen/CGCXX.cpp Tue Feb 27 16:06:01 2018 @@ -205,7 +205,7 @@ bool CodeGenModule::TryEmitDefinitionAsA } // Finally, set up the alias with its proper name and attributes. - setAliasAttributes(cast(AliasDecl.getDecl()), Alias); + setAliasAttributes(AliasDecl, Alias); return false; } Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326270&r1=326269&r2=326270&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Feb 27 16:06:01 2018 @@ -1248,8 +1248,8 @@ void CodeGenModule::SetCommonAttributes( addUsedGlobal(GV); } -void CodeGenModule::setAliasAttributes(const Decl *D, - llvm::GlobalValue *GV) { +void CodeGenModule::setAliasAttributes(GlobalDecl GD, llvm::GlobalValue *GV) { + const Decl *D = GD.getDecl(); SetCommonAttributes(D, GV); // Process the dllexport attribute based on whether the original definition @@ -3675,7 +3675,7 @@ void CodeGenModule::EmitAliasDefinition( if (VD->getTLSKind()) setTLSMode(GA, *VD); - setAliasAttributes(D, GA); + setAliasAttributes(GD, GA); } void CodeGenModule::emitIFuncDefinition(GlobalDecl GD) { Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326270&r1=326269&r2=326270&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Tue Feb 27 16:06:01 2018 @@ -1197,7 +1197,7 @@ public: /// attributes (i.e. it includes a call to SetCommonAttributes). /// /// NOTE: This should only be called for definitions. - void setAliasAttributes(const Decl *D, llvm::GlobalValue *GV); + void setAliasAttributes(GlobalDecl GD, llvm::GlobalValue *GV); void addReplacement(StringRef Name, llvm::Constant *C); Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=326270&r1=326269&r2=326270&view=diff == --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Tue Feb 27 16:06:01 2018 @@ -3637,7 +3637,7 @@ static void emitConstructorDestructorAli } // Finally, set up the alias with its proper name and attributes. - CGM.setAliasAttributes(cast(AliasDecl.getDecl()), Alias); + CGM.setAliasAttributes(AliasDecl, Alias); } void ItaniumCXXABI::emitCXXStructor(const CXXMethodDecl *MD, ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326272 - Inline trivial function. NFC.
Author: rafael Date: Tue Feb 27 16:14:18 2018 New Revision: 326272 URL: http://llvm.org/viewvc/llvm-project?rev=326272&view=rev Log: Inline trivial function. NFC. Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=326272&r1=326271&r2=326272&view=diff == --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Tue Feb 27 16:14:18 2018 @@ -49,11 +49,6 @@ llvm::Constant *CodeGenModule::GetAddrOf /*DontDefer=*/true, /*IsThunk=*/true); } -static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD, - const ThunkInfo &Thunk, llvm::Function *Fn) { - CGM.setGVProperties(Fn, MD); -} - static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk, llvm::Function *ThunkFn, bool ForVTable, GlobalDecl GD) { @@ -62,8 +57,7 @@ static void setThunkProperties(CodeGenMo !Thunk.Return.isEmpty()); // Set the right visibility. - const CXXMethodDecl *MD = cast(GD.getDecl()); - setThunkVisibility(CGM, MD, Thunk, ThunkFn); + CGM.setGVProperties(ThunkFn, cast(GD.getDecl())); if (CGM.supportsCOMDAT() && ThunkFn->isWeakForLinker()) ThunkFn->setComdat(CGM.getModule().getOrInsertComdat(ThunkFn->getName())); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326385 - Pass a GlobalDecl to SetInternalFunctionAttributes. NFC.
Author: rafael Date: Wed Feb 28 15:46:35 2018 New Revision: 326385 URL: http://llvm.org/viewvc/llvm-project?rev=326385&view=rev Log: Pass a GlobalDecl to SetInternalFunctionAttributes. NFC. This just reduces the noise in a followup patch. Part of D43900. Modified: cfe/trunk/lib/CodeGen/CGBlocks.cpp cfe/trunk/lib/CodeGen/CGDeclCXX.cpp cfe/trunk/lib/CodeGen/CGObjC.cpp cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp cfe/trunk/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h Modified: cfe/trunk/lib/CodeGen/CGBlocks.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBlocks.cpp?rev=326385&r1=326384&r2=326385&view=diff == --- cfe/trunk/lib/CodeGen/CGBlocks.cpp (original) +++ cfe/trunk/lib/CodeGen/CGBlocks.cpp Wed Feb 28 15:46:35 2018 @@ -1659,7 +1659,7 @@ CodeGenFunction::GenerateCopyHelperFunct false, false); - CGM.SetInternalFunctionAttributes(nullptr, Fn, FI); + CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI); StartFunction(FD, C.VoidTy, Fn, FI, args); ApplyDebugLocation NL{*this, blockInfo.getBlockExpr()->getLocStart()}; @@ -1837,7 +1837,7 @@ CodeGenFunction::GenerateDestroyHelperFu nullptr, SC_Static, false, false); - CGM.SetInternalFunctionAttributes(nullptr, Fn, FI); + CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI); StartFunction(FD, C.VoidTy, Fn, FI, args); ApplyDebugLocation NL{*this, blockInfo.getBlockExpr()->getLocStart()}; @@ -2119,7 +2119,7 @@ generateByrefCopyHelper(CodeGenFunction SC_Static, false, false); - CGF.CGM.SetInternalFunctionAttributes(nullptr, Fn, FI); + CGF.CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI); CGF.StartFunction(FD, R, Fn, FI, args); @@ -2193,7 +2193,7 @@ generateByrefDisposeHelper(CodeGenFuncti SC_Static, false, false); - CGF.CGM.SetInternalFunctionAttributes(nullptr, Fn, FI); + CGF.CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI); CGF.StartFunction(FD, R, Fn, FI, args); Modified: cfe/trunk/lib/CodeGen/CGDeclCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDeclCXX.cpp?rev=326385&r1=326384&r2=326385&view=diff == --- cfe/trunk/lib/CodeGen/CGDeclCXX.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDeclCXX.cpp Wed Feb 28 15:46:35 2018 @@ -312,7 +312,7 @@ llvm::Function *CodeGenModule::CreateGlo Fn->setSection(Section); } - SetInternalFunctionAttributes(nullptr, Fn, FI); + SetInternalFunctionAttributes(GlobalDecl(), Fn, FI); Fn->setCallingConv(getRuntimeCC()); Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=326385&r1=326384&r2=326385&view=diff == --- cfe/trunk/lib/CodeGen/CGObjC.cpp (original) +++ cfe/trunk/lib/CodeGen/CGObjC.cpp Wed Feb 28 15:46:35 2018 @@ -3243,7 +3243,7 @@ CodeGenFunction::GenerateObjCAtomicSette "__assign_helper_atomic_property_", &CGM.getModule()); - CGM.SetInternalFunctionAttributes(nullptr, Fn, FI); + CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI); StartFunction(FD, C.VoidTy, Fn, FI, args); @@ -3324,8 +3324,8 @@ CodeGenFunction::GenerateObjCAtomicGette llvm::Function *Fn = llvm::Function::Create(LTy, llvm::GlobalValue::InternalLinkage, "__copy_helper_atomic_property_", &CGM.getModule()); - - CGM.SetInternalFunctionAttributes(nullptr, Fn, FI); + + CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FI); StartFunction(FD, C.VoidTy, Fn, FI, args); Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp?rev=326385&r1=326384&r2=326385&view=diff == --- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original) +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Wed Feb 28 15:46:35 2018 @@ -1209,7 +1209,7 @@ emitCombinerOrInitializer(CodeGenModule auto *Fn = llvm::Function::Create( FnTy, llvm::GlobalValue::InternalLinkage, IsCombiner ? ".omp_combiner." : ".omp_initializer.", &CGM.getModule()); - CGM.SetInternalFunctionAttributes(/*D=*/nullptr, Fn, FnInfo); + CGM.SetInternalFunctionAttributes(GlobalDecl(), Fn, FnInfo); Fn->removeFnAttr(llvm::Attribute::NoInline); Fn->removeFnAttr(llvm::Attribute::OptimizeNone); F
r326388 - Pass a GlobalDecl to setNonAliasAttributes. NFC.
Author: rafael Date: Wed Feb 28 15:54:23 2018 New Revision: 326388 URL: http://llvm.org/viewvc/llvm-project?rev=326388&view=rev Log: Pass a GlobalDecl to setNonAliasAttributes. NFC. Also part of D43900. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326388&r1=326387&r2=326388&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 28 15:54:23 2018 @@ -1082,7 +1082,7 @@ llvm::ConstantInt *CodeGenModule::Create void CodeGenModule::setFunctionDefinitionAttributes(GlobalDecl GD, llvm::Function *F) { - setNonAliasAttributes(GD.getDecl(), F); + setNonAliasAttributes(GD, F); } void CodeGenModule::SetLLVMFunctionAttributes(const Decl *D, @@ -1304,8 +1304,9 @@ bool CodeGenModule::GetCPUAndFeaturesAtt return AddedAttr; } -void CodeGenModule::setNonAliasAttributes(const Decl *D, +void CodeGenModule::setNonAliasAttributes(GlobalDecl GD, llvm::GlobalObject *GO) { + const Decl *D = GD.getDecl(); SetCommonAttributes(D, GO); if (D) { @@ -1350,7 +1351,7 @@ void CodeGenModule::SetInternalFunctionA F->setLinkage(llvm::Function::InternalLinkage); - setNonAliasAttributes(D, F); + setNonAliasAttributes(GD, F); } static void setLinkageForGV(llvm::GlobalValue *GV, Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326388&r1=326387&r2=326388&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Feb 28 15:54:23 2018 @@ -1277,7 +1277,7 @@ private: bool GetCPUAndFeaturesAttributes(const Decl *D, llvm::AttrBuilder &AttrBuilder); - void setNonAliasAttributes(const Decl *D, llvm::GlobalObject *GO); + void setNonAliasAttributes(GlobalDecl GD, llvm::GlobalObject *GO); /// Set function attributes for a function declaration. void SetFunctionAttributes(GlobalDecl GD, llvm::Function *F, ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326391 - Inline a trivial function. NFC.
Author: rafael Date: Wed Feb 28 16:00:02 2018 New Revision: 326391 URL: http://llvm.org/viewvc/llvm-project?rev=326391&view=rev Log: Inline a trivial function. NFC. Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326391&r1=326390&r2=326391&view=diff == --- cfe/trunk/lib/CodeGen/CGCXX.cpp (original) +++ cfe/trunk/lib/CodeGen/CGCXX.cpp Wed Feb 28 16:00:02 2018 @@ -230,7 +230,7 @@ llvm::Function *CodeGenModule::codegenCX setFunctionDLLStorageClass(GD, Fn); CodeGenFunction(*this).GenerateCode(GD, Fn, FnInfo); - setFunctionDefinitionAttributes(GD, Fn); + setNonAliasAttributes(GD, Fn); SetLLVMFunctionAttributesForDefinition(MD, Fn); return Fn; } Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326391&r1=326390&r2=326391&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 28 16:00:02 2018 @@ -1080,11 +1080,6 @@ llvm::ConstantInt *CodeGenModule::Create return llvm::ConstantInt::get(Int64Ty, llvm::MD5Hash(MDS->getString())); } -void CodeGenModule::setFunctionDefinitionAttributes(GlobalDecl GD, -llvm::Function *F) { - setNonAliasAttributes(GD, F); -} - void CodeGenModule::SetLLVMFunctionAttributes(const Decl *D, const CGFunctionInfo &Info, llvm::Function *F) { @@ -3593,7 +3588,7 @@ void CodeGenModule::EmitGlobalFunctionDe CodeGenFunction(*this).GenerateCode(D, Fn, FI); - setFunctionDefinitionAttributes(GD, Fn); + setNonAliasAttributes(GD, Fn); SetLLVMFunctionAttributesForDefinition(D, Fn); if (const ConstructorAttr *CA = D->getAttr()) Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326391&r1=326390&r2=326391&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Feb 28 16:00:02 2018 @@ -1182,9 +1182,6 @@ public: bool TryEmitDefinitionAsAlias(GlobalDecl Alias, GlobalDecl Target); bool TryEmitBaseDestructorAsAlias(const CXXDestructorDecl *D); - /// Set attributes for a global definition. - void setFunctionDefinitionAttributes(GlobalDecl GD, llvm::Function *F); - llvm::GlobalValue *GetGlobalValue(StringRef Ref); /// Set attributes which are common to any form of a global definition (alias, ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326392 - Pass a GlobalDecl to SetCommonAttributes. NFC.
Author: rafael Date: Wed Feb 28 16:06:55 2018 New Revision: 326392 URL: http://llvm.org/viewvc/llvm-project?rev=326392&view=rev Log: Pass a GlobalDecl to SetCommonAttributes. NFC. Part of D43900. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326392&r1=326391&r2=326392&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Feb 28 16:06:55 2018 @@ -1232,8 +1232,8 @@ void CodeGenModule::SetLLVMFunctionAttri CreateFunctionTypeMetadata(FD, F); } -void CodeGenModule::SetCommonAttributes(const Decl *D, -llvm::GlobalValue *GV) { +void CodeGenModule::SetCommonAttributes(GlobalDecl GD, llvm::GlobalValue *GV) { + const Decl *D = GD.getDecl(); if (const auto *ND = dyn_cast_or_null(D)) setGVProperties(GV, ND); else @@ -1245,7 +1245,7 @@ void CodeGenModule::SetCommonAttributes( void CodeGenModule::setAliasAttributes(GlobalDecl GD, llvm::GlobalValue *GV) { const Decl *D = GD.getDecl(); - SetCommonAttributes(D, GV); + SetCommonAttributes(GD, GV); // Process the dllexport attribute based on whether the original definition // (not necessarily the aliasee) was exported. @@ -1302,7 +1302,7 @@ bool CodeGenModule::GetCPUAndFeaturesAtt void CodeGenModule::setNonAliasAttributes(GlobalDecl GD, llvm::GlobalObject *GO) { const Decl *D = GD.getDecl(); - SetCommonAttributes(D, GO); + SetCommonAttributes(GD, GO); if (D) { if (auto *GV = dyn_cast(GO)) { @@ -3731,7 +3731,7 @@ void CodeGenModule::emitIFuncDefinition( } else GIF->setName(MangledName); - SetCommonAttributes(D, GIF); + SetCommonAttributes(GD, GIF); } llvm::Function *CodeGenModule::getIntrinsic(unsigned IID, Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=326392&r1=326391&r2=326392&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Feb 28 16:06:55 2018 @@ -1188,7 +1188,7 @@ public: /// Objective-C method, function, global variable). /// /// NOTE: This should only be called for definitions. - void SetCommonAttributes(const Decl *D, llvm::GlobalValue *GV); + void SetCommonAttributes(GlobalDecl GD, llvm::GlobalValue *GV); /// Set attributes which must be preserved by an alias. This includes common /// attributes (i.e. it includes a call to SetCommonAttributes). ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326397 - Start setting dllimport/dllexport in setGVProperties.
Author: rafael Date: Wed Feb 28 16:35:47 2018 New Revision: 326397 URL: http://llvm.org/viewvc/llvm-project?rev=326397&view=rev Log: Start setting dllimport/dllexport in setGVProperties. This is the next step in setting dso_local for COFF. The patches changes setGVProperties to first set dllimport/dllexport and changes a few cases that were setting dllimport/dllexport manually. With this a few more GVs are marked dso_local. Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp cfe/trunk/lib/CodeGen/CGCXXABI.h cfe/trunk/lib/CodeGen/CGDecl.cpp cfe/trunk/lib/CodeGen/CGObjCGNU.cpp cfe/trunk/lib/CodeGen/CGObjCMac.cpp cfe/trunk/lib/CodeGen/CGVTables.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp cfe/trunk/test/CodeGenCXX/dllexport-ctor-closure.cpp cfe/trunk/test/CodeGenCXX/dllexport.cpp cfe/trunk/test/CodeGenObjC/dllstorage.m cfe/trunk/test/PCH/dllexport-default-arg-closure.cpp Modified: cfe/trunk/lib/CodeGen/CGCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXX.cpp?rev=326397&r1=326396&r2=326397&view=diff == --- cfe/trunk/lib/CodeGen/CGCXX.cpp (original) +++ cfe/trunk/lib/CodeGen/CGCXX.cpp Wed Feb 28 16:35:47 2018 @@ -205,7 +205,7 @@ bool CodeGenModule::TryEmitDefinitionAsA } // Finally, set up the alias with its proper name and attributes. - setAliasAttributes(AliasDecl, Alias); + SetCommonAttributes(AliasDecl, Alias); return false; } @@ -227,7 +227,6 @@ llvm::Function *CodeGenModule::codegenCX } setFunctionLinkage(GD, Fn); - setFunctionDLLStorageClass(GD, Fn); CodeGenFunction(*this).GenerateCode(GD, Fn, FnInfo); setNonAliasAttributes(GD, Fn); Modified: cfe/trunk/lib/CodeGen/CGCXXABI.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCXXABI.h?rev=326397&r1=326396&r2=326397&view=diff == --- cfe/trunk/lib/CodeGen/CGCXXABI.h (original) +++ cfe/trunk/lib/CodeGen/CGCXXABI.h Wed Feb 28 16:35:47 2018 @@ -433,6 +433,7 @@ public: /// base tables. virtual void emitVirtualInheritanceTables(const CXXRecordDecl *RD) = 0; + virtual bool exportThunk() = 0; virtual void setThunkLinkage(llvm::Function *Thunk, bool ForVTable, GlobalDecl GD, bool ReturnAdjustment) = 0; Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=326397&r1=326396&r2=326397&view=diff == --- cfe/trunk/lib/CodeGen/CGDecl.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDecl.cpp Wed Feb 28 16:35:47 2018 @@ -247,13 +247,6 @@ llvm::Constant *CodeGenModule::getOrCrea if (D.getTLSKind()) setTLSMode(GV, D); - if (D.isExternallyVisible()) { -if (D.hasAttr()) - GV->setDLLStorageClass(llvm::GlobalVariable::DLLImportStorageClass); -else if (D.hasAttr()) - GV->setDLLStorageClass(llvm::GlobalVariable::DLLExportStorageClass); - } - setGVProperties(GV, &D); // Make sure the result is of the correct type. Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=326397&r1=326396&r2=326397&view=diff == --- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original) +++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Wed Feb 28 16:35:47 2018 @@ -1035,16 +1035,8 @@ llvm::Value *CGObjCGNU::GetClass(CodeGen const ObjCInterfaceDecl *OID) { auto *Value = GetClassNamed(CGF, OID->getNameAsString(), OID->isWeakImported()); - if (CGM.getTriple().isOSBinFormatCOFF()) { -if (auto *ClassSymbol = dyn_cast(Value)) { - auto DLLStorage = llvm::GlobalValue::DefaultStorageClass; - if (OID->hasAttr()) -DLLStorage = llvm::GlobalValue::DLLExportStorageClass; - else if (OID->hasAttr()) -DLLStorage = llvm::GlobalValue::DLLImportStorageClass; - ClassSymbol->setDLLStorageClass(DLLStorage); -} - } + if (auto *ClassSymbol = dyn_cast(Value)) +CGM.setGVProperties(ClassSymbol, OID); return Value; } @@ -1061,13 +1053,7 @@ llvm::Value *CGObjCGNU::EmitNSAutoreleas if ((VD = dyn_cast(Result))) break; - auto DLLStorage = llvm::GlobalValue::DefaultStorageClass; - if (!VD || VD->hasAttr()) -DLLStorage = llvm::GlobalValue::DLLImportStorageClass; - else if (VD->hasAttr()) -DLLStorage = llvm::GlobalValue::DLLExportStorageClass; - - ClassSymbol->setDLLStorageClass(DLLStorage); + CGM.setGVProperties(ClassSymbol, VD); } } return Value; @@ -2336,14 +2322,8 @@ void CGObjCGNU::GenerateClass(const ObjC NULLPtr, NUL
r326527 - Always set dso_local in CodeGenModule::setDSOLocal.
Author: rafael Date: Thu Mar 1 17:29:51 2018 New Revision: 326527 URL: http://llvm.org/viewvc/llvm-project?rev=326527&view=rev Log: Always set dso_local in CodeGenModule::setDSOLocal. This shouldn't change any results for now, but is more consistent with how we set dllimport/dllexport and will make future changes easier. Since clang produces IR as it parses, it can find out mid file that something is dllimport. When that happens we have to drop dso_local. This is not a problem right now because CodeGenModule::setDSOLocal is called from relatively few places at the moment. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=326527&r1=326526&r2=326527&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Mar 1 17:29:51 2018 @@ -716,6 +716,12 @@ void CodeGenModule::setGlobalVisibility( static bool shouldAssumeDSOLocal(const CodeGenModule &CGM, llvm::GlobalValue *GV) { + if (GV->hasLocalLinkage()) +return true; + + if (!GV->hasDefaultVisibility() && !GV->hasExternalWeakLinkage()) +return true; + // DLLImport explicitly marks the GV as external. if (GV->hasDLLImportStorageClass()) return false; @@ -773,8 +779,7 @@ static bool shouldAssumeDSOLocal(const C } void CodeGenModule::setDSOLocal(llvm::GlobalValue *GV) const { - if (shouldAssumeDSOLocal(*this, GV)) -GV->setDSOLocal(true); + GV->setDSOLocal(shouldAssumeDSOLocal(*this, GV)); } void CodeGenModule::setDLLImportDLLExport(llvm::GlobalValue *GV, ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r326961 - Set dso_local on tls init functions.
Author: rafael Date: Wed Mar 7 15:18:06 2018 New Revision: 326961 URL: http://llvm.org/viewvc/llvm-project?rev=326961&view=rev Log: Set dso_local on tls init functions. We copy the visibility, so copying the dso_local flag seems the natural thing to do. Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=326961&r1=326960&r2=326961&view=diff == --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Wed Mar 7 15:18:06 2018 @@ -2398,8 +2398,10 @@ void ItaniumCXXABI::EmitThreadLocalInitF CGM.SetLLVMFunctionAttributes(nullptr, FI, cast(Init)); } -if (Init) +if (Init) { Init->setVisibility(Var->getVisibility()); + Init->setDSOLocal(Var->isDSOLocal()); +} llvm::LLVMContext &Context = CGM.getModule().getContext(); llvm::BasicBlock *Entry = llvm::BasicBlock::Create(Context, "", Wrapper); Modified: cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp?rev=326961&r1=326960&r2=326961&view=diff == --- cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp (original) +++ cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp Wed Mar 7 15:18:06 2018 @@ -114,6 +114,7 @@ void l() { // CHECK-MS-DAG: declare void @_Init_thread_header(i32*) // CHECK-MS-DAG: declare void @_Init_thread_footer(i32*) +// CHECK-IA-DAG: @_ZTH1t = dso_local alias void (), void ()* @__tls_init // CHECK-IA-DAG: declare i32 @__gxx_personality_v0(...) // CHECK-IA-DAG: define linkonce_odr hidden void @__clang_call_terminate(i8*) ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r327543 - Set dso_local on external rtti GVs.
Author: rafael Date: Wed Mar 14 11:14:46 2018 New Revision: 327543 URL: http://llvm.org/viewvc/llvm-project?rev=327543&view=rev Log: Set dso_local on external rtti GVs. In this particular case it would be possible to just add an else with CGM.setDSOLocal(GV), but it seems better to have as many callers as possible just call setGVProperties so that we can centralize the logic there. This patch then makes setGVProperties able to handle null Decls. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=327543&r1=327542&r2=327543&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Mar 14 11:14:46 2018 @@ -707,7 +707,8 @@ void CodeGenModule::setGlobalVisibility( GV->setVisibility(llvm::GlobalValue::DefaultVisibility); return; } - + if (!D) +return; // Set visibility for definitions. LinkageInfo LV = D->getLinkageAndVisibility(); if (LV.isVisibilityExplicit() || !GV->isDeclarationForLinker()) @@ -797,7 +798,7 @@ void CodeGenModule::setDLLImportDLLExpor void CodeGenModule::setDLLImportDLLExport(llvm::GlobalValue *GV, const NamedDecl *D) const { - if (D->isExternallyVisible()) { + if (D && D->isExternallyVisible()) { if (D->hasAttr()) GV->setDLLStorageClass(llvm::GlobalVariable::DLLImportStorageClass); else if (D->hasAttr() && !GV->isDeclarationForLinker()) Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=327543&r1=327542&r2=327543&view=diff == --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Wed Mar 14 11:14:46 2018 @@ -2616,10 +2616,8 @@ ItaniumRTTIBuilder::GetAddrOfExternalRTT /*Constant=*/true, llvm::GlobalValue::ExternalLinkage, nullptr, Name); -if (const RecordType *RecordTy = dyn_cast(Ty)) { - const CXXRecordDecl *RD = cast(RecordTy->getDecl()); - CGM.setGVProperties(GV, RD); -} +const CXXRecordDecl *RD = Ty->getAsCXXRecordDecl(); +CGM.setGVProperties(GV, RD); } return llvm::ConstantExpr::getBitCast(GV, CGM.Int8PtrTy); Modified: cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp?rev=327543&r1=327542&r2=327543&view=diff == --- cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp (original) +++ cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp Wed Mar 14 11:14:46 2018 @@ -10,7 +10,7 @@ void attempt() { try { except(); } catch (...) { } } -// CHECK: @_ZTIi = external constant i8* +// CHECK: @_ZTIi = external dso_local constant i8* // CHECK: define {{.*}}void @_Z6exceptv() {{.*}} { // CHECK: %exception = call {{.*}}i8* @__cxa_allocate_exception(i32 4) ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r327544 - Set dso_local for NSConcreteStackBlock.
Author: rafael Date: Wed Mar 14 11:19:26 2018 New Revision: 327544 URL: http://llvm.org/viewvc/llvm-project?rev=327544&view=rev Log: Set dso_local for NSConcreteStackBlock. Modified: cfe/trunk/lib/CodeGen/CGBlocks.cpp cfe/trunk/test/CodeGen/blocks-windows.c Modified: cfe/trunk/lib/CodeGen/CGBlocks.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBlocks.cpp?rev=327544&r1=327543&r2=327544&view=diff == --- cfe/trunk/lib/CodeGen/CGBlocks.cpp (original) +++ cfe/trunk/lib/CodeGen/CGBlocks.cpp Wed Mar 14 11:19:26 2018 @@ -2586,11 +2586,11 @@ static void configureBlocksRuntimeObject } } - if (!CGM.getLangOpts().BlocksRuntimeOptional) -return; - - if (GV->isDeclaration() && GV->hasExternalLinkage()) + if (CGM.getLangOpts().BlocksRuntimeOptional && GV->isDeclaration() && + GV->hasExternalLinkage()) GV->setLinkage(llvm::GlobalValue::ExternalWeakLinkage); + + CGM.setDSOLocal(GV); } llvm::Constant *CodeGenModule::getBlockObjectDispose() { Modified: cfe/trunk/test/CodeGen/blocks-windows.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/blocks-windows.c?rev=327544&r1=327543&r2=327544&view=diff == --- cfe/trunk/test/CodeGen/blocks-windows.c (original) +++ cfe/trunk/test/CodeGen/blocks-windows.c Wed Mar 14 11:19:26 2018 @@ -67,7 +67,7 @@ int (*g(void))(void) { return _Block_copy(^{ ++i; return i; }); } -// CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dllexport global i8* +// CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dso_local dllexport global i8* // CHECK-BLOCKS-IN-BLOCKS-DEFN: @_NSConcreteStackBlock = common dso_local dllexport global [5 x i32] // CHECK-BLOCKS-NOT-IN-BLOCKS: @_NSConcreteStackBlock = external dllimport global i8* // CHECK-BLOCKS-NOT-IN-BLOCKS-EXTERN: @_NSConcreteStackBlock = external dllimport global i8* ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r327991 - Set dso_local for guid decls.
Author: rafael Date: Tue Mar 20 08:42:58 2018 New Revision: 327991 URL: http://llvm.org/viewvc/llvm-project?rev=327991&view=rev Log: Set dso_local for guid decls. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=327991&r1=327990&r2=327991&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 08:42:58 2018 @@ -1921,6 +1921,7 @@ ConstantAddress CodeGenModule::GetAddrOf /*isConstant=*/true, llvm::GlobalValue::LinkOnceODRLinkage, Init, Name); if (supportsCOMDAT()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); + setDSOLocal(GV); return ConstantAddress(GV, Alignment); } Modified: cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp?rev=327991&r1=327990&r2=327991&view=diff == --- cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp (original) +++ cfe/trunk/test/CodeGenCXX/microsoft-templ-uuidof.cpp Tue Mar 20 08:42:58 2018 @@ -15,6 +15,8 @@ struct __declspec(uuid("{--B struct __declspec(uuid("{----}")) C {}; +// CHECK-DAG: @_GUID_____ = linkonce_odr dso_local + const _GUID &xa = __uuidof(X); // CHECK-DAG: @"?xa@@3ABU_GUID@@B" = {{.*}} @_GUID_____ ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r327993 - Set dso_local for CFConstantStringClassReference.
Author: rafael Date: Tue Mar 20 08:48:00 2018 New Revision: 327993 URL: http://llvm.org/viewvc/llvm-project?rev=327993&view=rev Log: Set dso_local for CFConstantStringClassReference. This one cannot use setGVProperties since it has special logic for when it is dllimport or not. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGen/cfstring-windows.c Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=327993&r1=327992&r2=327993&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 08:48:00 2018 @@ -3810,14 +3810,13 @@ CodeGenModule::GetAddrOfConstantCFString if (!CFConstantStringClassRef) { llvm::Type *Ty = getTypes().ConvertType(getContext().IntTy); Ty = llvm::ArrayType::get(Ty, 0); -llvm::Constant *GV = -CreateRuntimeVariable(Ty, "__CFConstantStringClassReference"); +llvm::GlobalValue *GV = cast( +CreateRuntimeVariable(Ty, "__CFConstantStringClassReference")); if (getTriple().isOSBinFormatCOFF()) { IdentifierInfo &II = getContext().Idents.get(GV->getName()); TranslationUnitDecl *TUDecl = getContext().getTranslationUnitDecl(); DeclContext *DC = TranslationUnitDecl::castToDeclContext(TUDecl); - llvm::GlobalValue *CGV = cast(GV); const VarDecl *VD = nullptr; for (const auto &Result : DC->lookup(&II)) @@ -3825,13 +3824,14 @@ CodeGenModule::GetAddrOfConstantCFString break; if (!VD || !VD->hasAttr()) { -CGV->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass); -CGV->setLinkage(llvm::GlobalValue::ExternalLinkage); +GV->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass); +GV->setLinkage(llvm::GlobalValue::ExternalLinkage); } else { -CGV->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass); -CGV->setLinkage(llvm::GlobalValue::ExternalLinkage); +GV->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass); +GV->setLinkage(llvm::GlobalValue::ExternalLinkage); } } +setDSOLocal(GV); // Decay array -> ptr CFConstantStringClassRef = Modified: cfe/trunk/test/CodeGen/cfstring-windows.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cfstring-windows.c?rev=327993&r1=327992&r2=327993&view=diff == --- cfe/trunk/test/CodeGen/cfstring-windows.c (original) +++ cfe/trunk/test/CodeGen/cfstring-windows.c Tue Mar 20 08:48:00 2018 @@ -31,7 +31,7 @@ __declspec(dllimport) long __CFConstantS typedef struct __CFString *CFStringRef; const CFStringRef string = (CFStringRef)__builtin___CFStringMakeConstantString("string"); -// CHECK-CF-IN-CF-DECL: @__CFConstantStringClassReference = external dllexport global [0 x i32] +// CHECK-CF-IN-CF-DECL: @__CFConstantStringClassReference = external dso_local dllexport global [0 x i32] // CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = common dso_local dllexport global [32 x i32] // CHECK-CF: @__CFConstantStringClassReference = external dllimport global [0 x i32] // CHECK-CF-EXTERN: @__CFConstantStringClassReference = external dllimport global [0 x i32] ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r312766 - Update for llvm change.
Author: rafael Date: Thu Sep 7 17:01:26 2017 New Revision: 312766 URL: http://llvm.org/viewvc/llvm-project?rev=312766&view=rev Log: Update for llvm change. Modified: cfe/trunk/tools/clang-format/ClangFormat.cpp cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp Modified: cfe/trunk/tools/clang-format/ClangFormat.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/ClangFormat.cpp?rev=312766&r1=312765&r2=312766&view=diff == --- cfe/trunk/tools/clang-format/ClangFormat.cpp (original) +++ cfe/trunk/tools/clang-format/ClangFormat.cpp Thu Sep 7 17:01:26 2017 @@ -351,8 +351,10 @@ int main(int argc, const char **argv) { "together with s, the files are edited in-place. Otherwise, the\n" "result is written to the standard output.\n"); - if (Help) + if (Help) { cl::PrintHelpMessage(); +return 0; + } if (DumpConfig) { llvm::Expected FormatStyle = Modified: cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp?rev=312766&r1=312765&r2=312766&view=diff == --- cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp (original) +++ cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp Thu Sep 7 17:01:26 2017 @@ -931,8 +931,10 @@ int main(int argc, const char **argv) { "one. The resulting file can also be unbundled into different files by \n" "this tool if -unbundle is provided.\n"); - if (Help) + if (Help) { cl::PrintHelpMessage(); +return 0; + } bool Error = false; if (Unbundle) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] r312769 - Update for PrintHelpMessage not calling exit.
Author: rafael Date: Thu Sep 7 17:33:39 2017 New Revision: 312769 URL: http://llvm.org/viewvc/llvm-project?rev=312769&view=rev Log: Update for PrintHelpMessage not calling exit. Modified: clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp clang-tools-extra/trunk/modularize/Modularize.cpp Modified: clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp?rev=312769&r1=312768&r2=312769&view=diff == --- clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/tool/ClangTidyMain.cpp Thu Sep 7 17:33:39 2017 @@ -392,13 +392,13 @@ static int clangTidyMain(int argc, const if (EnabledChecks.empty()) { llvm::errs() << "Error: no checks enabled.\n"; llvm::cl::PrintHelpMessage(/*Hidden=*/false, /*Categorized=*/true); -return 1; +return 0; } if (PathList.empty()) { llvm::errs() << "Error: no input files specified.\n"; llvm::cl::PrintHelpMessage(/*Hidden=*/false, /*Categorized=*/true); -return 1; +return 0; } ProfileData Profile; Modified: clang-tools-extra/trunk/modularize/Modularize.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/modularize/Modularize.cpp?rev=312769&r1=312768&r2=312769&view=diff == --- clang-tools-extra/trunk/modularize/Modularize.cpp (original) +++ clang-tools-extra/trunk/modularize/Modularize.cpp Thu Sep 7 17:33:39 2017 @@ -825,7 +825,7 @@ int main(int Argc, const char **Argv) { // No go if we have no header list file. if (ListFileNames.size() == 0) { cl::PrintHelpMessage(); -return 1; +return 0; } std::unique_ptr ModUtil; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r309885 - Update for llvm change.
Author: rafael Date: Wed Aug 2 13:32:35 2017 New Revision: 309885 URL: http://llvm.org/viewvc/llvm-project?rev=309885&view=rev Log: Update for llvm change. Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp cfe/trunk/tools/driver/cc1as_main.cpp Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseStmtAsm.cpp?rev=309885&r1=309884&r2=309885&view=diff == --- cfe/trunk/lib/Parse/ParseStmtAsm.cpp (original) +++ cfe/trunk/lib/Parse/ParseStmtAsm.cpp Wed Aug 2 13:32:35 2017 @@ -578,8 +578,7 @@ StmtResult Parser::ParseMicrosoftAsmStat llvm::SourceMgr TempSrcMgr; llvm::MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), &TempSrcMgr); - MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, llvm::CodeModel::Default, - Ctx); + MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, Ctx); std::unique_ptr Buffer = llvm::MemoryBuffer::getMemBuffer(AsmString, ""); Modified: cfe/trunk/tools/driver/cc1as_main.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=309885&r1=309884&r2=309885&view=diff == --- cfe/trunk/tools/driver/cc1as_main.cpp (original) +++ cfe/trunk/tools/driver/cc1as_main.cpp Wed Aug 2 13:32:35 2017 @@ -356,7 +356,7 @@ static bool ExecuteAssembler(AssemblerIn PIC = false; } - MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), PIC, CodeModel::Default, Ctx); + MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), PIC, Ctx); if (Opts.SaveTemporaryLabels) Ctx.setAllowTemporaryLabels(false); if (Opts.GenDwarfForAssembly) ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r309912 - Update for llvm change.
Author: rafael Date: Wed Aug 2 19:16:28 2017 New Revision: 309912 URL: http://llvm.org/viewvc/llvm-project?rev=309912&view=rev Log: Update for llvm change. Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=309912&r1=309911&r2=309912&view=diff == --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed Aug 2 19:16:28 2017 @@ -335,16 +335,18 @@ static CodeGenOpt::Level getCGOptLevel(c } } -static llvm::CodeModel::Model getCodeModel(const CodeGenOptions &CodeGenOpts) { - unsigned CodeModel = - llvm::StringSwitch(CodeGenOpts.CodeModel) - .Case("small", llvm::CodeModel::Small) - .Case("kernel", llvm::CodeModel::Kernel) - .Case("medium", llvm::CodeModel::Medium) - .Case("large", llvm::CodeModel::Large) - .Case("default", llvm::CodeModel::Default) - .Default(~0u); +static Optional +getCodeModel(const CodeGenOptions &CodeGenOpts) { + unsigned CodeModel = llvm::StringSwitch(CodeGenOpts.CodeModel) + .Case("small", llvm::CodeModel::Small) + .Case("kernel", llvm::CodeModel::Kernel) + .Case("medium", llvm::CodeModel::Medium) + .Case("large", llvm::CodeModel::Large) + .Case("default", ~1u) + .Default(~0u); assert(CodeModel != ~0u && "invalid code model!"); + if (CodeModel == ~1u) +return None; return static_cast(CodeModel); } @@ -658,7 +660,7 @@ void EmitAssemblyHelper::CreateTargetMac return; } - llvm::CodeModel::Model CM = getCodeModel(CodeGenOpts); + Optional CM = getCodeModel(CodeGenOpts); std::string FeaturesStr = llvm::join(TargetOpts.Features.begin(), TargetOpts.Features.end(), ","); llvm::Reloc::Model RM = getRelocModel(CodeGenOpts); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328036 - Set dso_local for runtime function.
Author: rafael Date: Tue Mar 20 13:27:30 2018 New Revision: 328036 URL: http://llvm.org/viewvc/llvm-project?rev=328036&view=rev Log: Set dso_local for runtime function. This is another case where there is special logic for adding dllimport and so we cannot use setGVProperties. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328036&r1=328035&r2=328036&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 13:27:30 2018 @@ -2629,6 +2629,7 @@ CodeGenModule::CreateRuntimeFunction(llv F->setLinkage(llvm::GlobalValue::ExternalLinkage); } } + setDSOLocal(F); } } Modified: cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp?rev=328036&r1=328035&r2=328036&view=diff == --- cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp (original) +++ cfe/trunk/test/CodeGenCXX/runtime-dllstorage.cpp Tue Mar 20 13:27:30 2018 @@ -106,16 +106,16 @@ void l() { } // CHECK-MS-DAG: @_Init_thread_epoch = external thread_local global i32 -// CHECK-MS-DAG: declare i32 @__tlregdtor(void ()*) -// CHECK-MS-DAG: declare i32 @atexit(void ()*) +// CHECK-MS-DAG: declare dso_local i32 @__tlregdtor(void ()*) +// CHECK-MS-DAG: declare dso_local i32 @atexit(void ()*) // CHECK-MS-DYNAMIC-DAG: declare dllimport {{.*}} void @_CxxThrowException // CHECK-MS-STATIC-DAG: declare {{.*}} void @_CxxThrowException // CHECK-MS-DAG: declare dso_local noalias i8* @"??2@YAPAXI@Z" -// CHECK-MS-DAG: declare void @_Init_thread_header(i32*) -// CHECK-MS-DAG: declare void @_Init_thread_footer(i32*) +// CHECK-MS-DAG: declare dso_local void @_Init_thread_header(i32*) +// CHECK-MS-DAG: declare dso_local void @_Init_thread_footer(i32*) // CHECK-IA-DAG: @_ZTH1t = dso_local alias void (), void ()* @__tls_init -// CHECK-IA-DAG: declare i32 @__gxx_personality_v0(...) +// CHECK-IA-DAG: declare dso_local i32 @__gxx_personality_v0(...) // CHECK-IA-DAG: define linkonce_odr hidden void @__clang_call_terminate(i8*) // CHECK-DYNAMIC-IA-DAG: declare dllimport i32 @__cxa_thread_atexit(void (i8*)*, i8*, i8*) @@ -135,25 +135,25 @@ void l() { // CHECK-DYNAMIC-IMPORT-IA-DAG: declare dllimport void @__cxa_guard_release(i64*) // CHECK-DYNAMIC-EXPORT-IA-DAG: declare dllimport void @__cxa_guard_release(i64*) // CHECK-DYANMIC-IA-DAG: declare dllimport void @_ZSt9terminatev() -// CHECK-DYNAMIC-NODECL-IA-DAG: declare void @_ZSt9terminatev() +// CHECK-DYNAMIC-NODECL-IA-DAG: declare dso_local void @_ZSt9terminatev() // CHECK-DYNAMIC-IMPORT-IA-DAG: declare dllimport void @_ZSt9terminatev() // CHECK-DYNAMIC-EXPORT-IA-DAG: declare dso_local dllexport void @_ZSt9terminatev() -// CHECK-STATIC-IA-DAG: declare i32 @__cxa_thread_atexit(void (i8*)*, i8*, i8*) -// CHECK-STATIC-IA-DAG: declare i32 @__cxa_atexit(void (i8*)*, i8*, i8*) -// CHECK-STATIC-IA-DAG: declare i8* @__cxa_allocate_exception(i32) -// CHECK-STATIC-IA-DAG: declare void @__cxa_throw(i8*, i8*, i8*) -// CHECK-STATIC-DECL-IA-DAG: declare i32 @__cxa_guard_acquire(i64*) -// CHECK-STATIC-NODECL-IA-DAG: declare i32 @__cxa_guard_acquire(i64*) -// CHECK-STATIC-IMPORT-IA-DAG: declare i32 @__cxa_guard_acquire(i64*) +// CHECK-STATIC-IA-DAG: declare dso_local i32 @__cxa_thread_atexit(void (i8*)*, i8*, i8*) +// CHECK-STATIC-IA-DAG: declare dso_local i32 @__cxa_atexit(void (i8*)*, i8*, i8*) +// CHECK-STATIC-IA-DAG: declare dso_local i8* @__cxa_allocate_exception(i32) +// CHECK-STATIC-IA-DAG: declare dso_local void @__cxa_throw(i8*, i8*, i8*) +// CHECK-STATIC-DECL-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*) +// CHECK-STATIC-NODECL-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*) +// CHECK-STATIC-IMPORT-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*) // CHECK-STATIC-EXPORT-IA-DAG: declare dso_local i32 @__cxa_guard_acquire(i64*) // CHECK-IA-DAG: declare dso_local noalias i8* @_Znwj(i32) -// CHECK-STATIC-DECL-IA-DAG: declare void @__cxa_guard_release(i64*) -// CHECK-STATIC-NODECL-IA-DAG: declare void @__cxa_guard_release(i64*) -// CHECK-STATIC-IMPORT-IA-DAG: declare void @__cxa_guard_release(i64*) +// CHECK-STATIC-DECL-IA-DAG: declare dso_local void @__cxa_guard_release(i64*) +// CHECK-STATIC-NODECL-IA-DAG: declare dso_local void @__cxa_guard_release(i64*) +// CHECK-STATIC-IMPORT-IA-DAG: declare dso_local void @__cxa_guard_release(i64*) // CHECK-STATIC-EXPORT-IA-DAG: declare dso_local void @__cxa_guard_release(i64*) -// CHECK-STATIC-IA-DAG: declare void @_ZSt9terminatev() -// CHECK-STATIC-NODECL-IA-DAG: declare void @_ZSt9terminatev() -// CHECK-STATIC-IMPORT-IA
r328040 - Set dso_local on string literals.
Author: rafael Date: Tue Mar 20 13:42:55 2018 New Revision: 328040 URL: http://llvm.org/viewvc/llvm-project?rev=328040&view=rev Log: Set dso_local on string literals. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGen/c-strings.c cfe/trunk/test/CodeGen/string-literal-short-wstring.c cfe/trunk/test/CodeGen/wchar-const.c cfe/trunk/test/CodeGenCXX/funcsig.cpp cfe/trunk/test/CodeGenCXX/ms_wide_predefined_expr.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328040&r1=328039&r2=328040&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 13:42:55 2018 @@ -4016,6 +4016,7 @@ GenerateStringLiteral(llvm::Constant *C, assert(CGM.supportsCOMDAT() && "Only COFF uses weak string literals"); GV->setComdat(M.getOrInsertComdat(GV->getName())); } + CGM.setDSOLocal(GV); return GV; } Modified: cfe/trunk/test/CodeGen/c-strings.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/c-strings.c?rev=328040&r1=328039&r2=328040&view=diff == --- cfe/trunk/test/CodeGen/c-strings.c (original) +++ cfe/trunk/test/CodeGen/c-strings.c Tue Mar 20 13:42:55 2018 @@ -6,7 +6,7 @@ // CHECK: @align = {{(dso_local )?}}global i8 [[ALIGN:[0-9]+]] // ITANIUM: @.str = private unnamed_addr constant [6 x i8] c"hello\00" -// MSABI: @"??_C@_05CJBACGMB@hello?$AA@" = linkonce_odr unnamed_addr constant [6 x i8] c"hello\00", comdat, align 1 +// MSABI: @"??_C@_05CJBACGMB@hello?$AA@" = linkonce_odr dso_local unnamed_addr constant [6 x i8] c"hello\00", comdat, align 1 // ITANIUM: @f1.x = internal global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0) // MSABI: @f1.x = internal global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"??_C@_05CJBACGMB@hello?$AA@", i32 0, i32 0) // CHECK: @f2.x = internal global [6 x i8] c"hello\00", align [[ALIGN]] Modified: cfe/trunk/test/CodeGen/string-literal-short-wstring.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/string-literal-short-wstring.c?rev=328040&r1=328039&r2=328040&view=diff == --- cfe/trunk/test/CodeGen/string-literal-short-wstring.c (original) +++ cfe/trunk/test/CodeGen/string-literal-short-wstring.c Tue Mar 20 13:42:55 2018 @@ -12,12 +12,12 @@ int main() { char b[10] = "\u1120\u0220\U00102030"; // ITANIUM: private unnamed_addr constant [3 x i16] [i16 65, i16 66, i16 0] - // MSABI: linkonce_odr unnamed_addr constant [3 x i16] [i16 65, i16 66, i16 0] + // MSABI: linkonce_odr dso_local unnamed_addr constant [3 x i16] [i16 65, i16 66, i16 0] const wchar_t *foo = L"AB"; // This should convert to utf16. // ITANIUM: private unnamed_addr constant [5 x i16] [i16 4384, i16 544, i16 -9272, i16 -9168, i16 0] - // MSABI: linkonce_odr unnamed_addr constant [5 x i16] [i16 4384, i16 544, i16 -9272, i16 -9168, i16 0] + // MSABI: linkonce_odr dso_local unnamed_addr constant [5 x i16] [i16 4384, i16 544, i16 -9272, i16 -9168, i16 0] const wchar_t *bar = L"\u1120\u0220\U00102030"; Modified: cfe/trunk/test/CodeGen/wchar-const.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/wchar-const.c?rev=328040&r1=328039&r2=328040&view=diff == --- cfe/trunk/test/CodeGen/wchar-const.c (original) +++ cfe/trunk/test/CodeGen/wchar-const.c Tue Mar 20 13:42:55 2018 @@ -15,7 +15,7 @@ typedef __WCHAR_TYPE__ wchar_t; // CHECK-DAR: private unnamed_addr constant [18 x i32] [i32 84, -// CHECK-WIN: linkonce_odr unnamed_addr constant [18 x i16] [i16 84, +// CHECK-WIN: linkonce_odr dso_local unnamed_addr constant [18 x i16] [i16 84, extern void foo(const wchar_t* p); int main (int argc, const char * argv[]) { Modified: cfe/trunk/test/CodeGenCXX/funcsig.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/funcsig.cpp?rev=328040&r1=328039&r2=328040&view=diff == --- cfe/trunk/test/CodeGenCXX/funcsig.cpp (original) +++ cfe/trunk/test/CodeGenCXX/funcsig.cpp Tue Mar 20 13:42:55 2018 @@ -12,24 +12,24 @@ int printf(const char *, ...); void funcNoProto() { printf("__FUNCSIG__ %s\n\n", __FUNCSIG__); } -// CHECK-C: @"??_C@_0BL@IHLLLCAO@void?5__cdecl?5funcNoProto?$CI?$CJ?$AA@" = linkonce_odr unnamed_addr constant [27 x i8] c"void __cdecl funcNoProto()\00" -// CHECK-CXX: @"??_C@_0BP@PJOECCJN@void?5__cdecl?5funcNoProto?$CIvoid?$CJ?$AA@" = linkonce_odr unnamed_addr constant [31 x i8] c"void __cdecl funcNoProto(void)\00" +// CHECK-C: @"??_C@_0BL@IHLLLCAO@void?5__cdecl?5funcNoProto?$CI?$CJ?$AA@" = linkonce_odr dso_l
r328048 - Add CHECKs for a few declarations. NFC.
Author: rafael Date: Tue Mar 20 14:54:14 2018 New Revision: 328048 URL: http://llvm.org/viewvc/llvm-project?rev=328048&view=rev Log: Add CHECKs for a few declarations. NFC. We were just missing test coverage for this. Modified: cfe/trunk/test/CodeGen/mingw-long-double.c Modified: cfe/trunk/test/CodeGen/mingw-long-double.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mingw-long-double.c?rev=328048&r1=328047&r2=328048&view=diff == --- cfe/trunk/test/CodeGen/mingw-long-double.c (original) +++ cfe/trunk/test/CodeGen/mingw-long-double.c Tue Mar 20 14:54:14 2018 @@ -41,3 +41,7 @@ long double _Complex TestLDC(long double // GNU32: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* byval align 4 %x) // GNU64: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* %x) // MSC64: define dso_local void @TestLDC({ double, double }* noalias sret %agg.result, { double, double }* %x) + +// GNU32: declare void @__mulxc3 +// GNU64: declare void @__mulxc3 +// MSC64: declare void @__muldc3 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328050 - Delete BuiltinCC. NFC.
Author: rafael Date: Tue Mar 20 15:02:57 2018 New Revision: 328050 URL: http://llvm.org/viewvc/llvm-project?rev=328050&view=rev Log: Delete BuiltinCC. NFC. It is always identical to RuntimeCC. Modified: cfe/trunk/lib/CodeGen/ABIInfo.h cfe/trunk/lib/CodeGen/CGExprComplex.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenTypeCache.h cfe/trunk/lib/CodeGen/TargetInfo.cpp Modified: cfe/trunk/lib/CodeGen/ABIInfo.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ABIInfo.h?rev=328050&r1=328049&r2=328050&view=diff == --- cfe/trunk/lib/CodeGen/ABIInfo.h (original) +++ cfe/trunk/lib/CodeGen/ABIInfo.h Tue Mar 20 15:02:57 2018 @@ -53,12 +53,9 @@ namespace swiftcall { CodeGen::CodeGenTypes &CGT; protected: llvm::CallingConv::ID RuntimeCC; -llvm::CallingConv::ID BuiltinCC; public: ABIInfo(CodeGen::CodeGenTypes &cgt) - : CGT(cgt), -RuntimeCC(llvm::CallingConv::C), -BuiltinCC(llvm::CallingConv::C) {} +: CGT(cgt), RuntimeCC(llvm::CallingConv::C) {} virtual ~ABIInfo(); @@ -77,11 +74,6 @@ namespace swiftcall { return RuntimeCC; } -/// Return the calling convention to use for compiler builtins -llvm::CallingConv::ID getBuiltinCC() const { - return BuiltinCC; -} - virtual void computeInfo(CodeGen::CGFunctionInfo &FI) const = 0; /// EmitVAArg - Emit the target dependent code to load a value of Modified: cfe/trunk/lib/CodeGen/CGExprComplex.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprComplex.cpp?rev=328050&r1=328049&r2=328050&view=diff == --- cfe/trunk/lib/CodeGen/CGExprComplex.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExprComplex.cpp Tue Mar 20 15:02:57 2018 @@ -629,7 +629,7 @@ ComplexPairTy ComplexExprEmitter::EmitCo llvm::Instruction *Call; RValue Res = CGF.EmitCall(FuncInfo, Callee, ReturnValueSlot(), Args, &Call); - cast(Call)->setCallingConv(CGF.CGM.getBuiltinCC()); + cast(Call)->setCallingConv(CGF.CGM.getRuntimeCC()); return Res.getComplexVal(); } Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328050&r1=328049&r2=328050&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 15:02:57 2018 @@ -123,7 +123,6 @@ CodeGenModule::CodeGenModule(ASTContext ASTAllocaAddressSpace = getTargetCodeGenInfo().getASTAllocaAddressSpace(); RuntimeCC = getTargetCodeGenInfo().getABIInfo().getRuntimeCC(); - BuiltinCC = getTargetCodeGenInfo().getABIInfo().getBuiltinCC(); if (LangOpts.ObjC1) createObjCRuntime(); @@ -2646,7 +2645,7 @@ CodeGenModule::CreateBuiltinFunction(llv /*DontDefer=*/false, /*IsThunk=*/false, ExtraAttrs); if (auto *F = dyn_cast(C)) if (F->empty()) - F->setCallingConv(getBuiltinCC()); + F->setCallingConv(getRuntimeCC()); return C; } Modified: cfe/trunk/lib/CodeGen/CodeGenTypeCache.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenTypeCache.h?rev=328050&r1=328049&r2=328050&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenTypeCache.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenTypeCache.h Tue Mar 20 15:02:57 2018 @@ -112,8 +112,6 @@ struct CodeGenTypeCache { llvm::CallingConv::ID RuntimeCC; llvm::CallingConv::ID getRuntimeCC() const { return RuntimeCC; } - llvm::CallingConv::ID BuiltinCC; - llvm::CallingConv::ID getBuiltinCC() const { return BuiltinCC; } LangAS getASTAllocaAddressSpace() const { return ASTAllocaAddressSpace; } }; Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=328050&r1=328049&r2=328050&view=diff == --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Tue Mar 20 15:02:57 2018 @@ -5690,18 +5690,6 @@ void ARMABIInfo::setCCs() { llvm::CallingConv::ID abiCC = getABIDefaultCC(); if (abiCC != getLLVMDefaultCC()) RuntimeCC = abiCC; - - // AAPCS apparently requires runtime support functions to be soft-float, but - // that's almost certainly for historic reasons (Thumb1 not supporting VFP - // most likely). It's more convenient for AAPCS16_VFP to be hard-float. - - // The Run-time ABI for the ARM Architecture section 4.1.2 requires - // AEABI-complying FP helper functions to use the base AAPCS. - // These AEABI functions are expanded in the ARM llvm backend, all the builtin - // support functions emitted by clang such as the _Complex
r328068 - Set dso_local on runtime variables.
Author: rafael Date: Tue Mar 20 18:30:16 2018 New Revision: 328068 URL: http://llvm.org/viewvc/llvm-project?rev=328068&view=rev Log: Set dso_local on runtime variables. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328068&r1=328067&r2=328068&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Tue Mar 20 18:30:16 2018 @@ -2953,7 +2953,10 @@ llvm::Constant *CodeGenModule::GetAddrOf llvm::Constant * CodeGenModule::CreateRuntimeVariable(llvm::Type *Ty, StringRef Name) { - return GetOrCreateLLVMGlobal(Name, llvm::PointerType::getUnqual(Ty), nullptr); + auto *Ret = + GetOrCreateLLVMGlobal(Name, llvm::PointerType::getUnqual(Ty), nullptr); + setDSOLocal(cast(Ret->stripPointerCasts())); + return Ret; } void CodeGenModule::EmitTentativeDefinition(const VarDecl *D) { Modified: cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp?rev=328068&r1=328067&r2=328068&view=diff == --- cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp (original) +++ cfe/trunk/test/CodeGenCXX/ubsan-vtable-checks.cpp Tue Mar 20 18:30:16 2018 @@ -1,7 +1,7 @@ // RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-linux -emit-llvm -fsanitize=null %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NULL --check-prefix=ITANIUM // RUN: %clang_cc1 -std=c++11 -triple x86_64-windows -emit-llvm -fsanitize=null %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NULL --check-prefix=MSABI // RUN: %clang_cc1 -std=c++11 -triple x86_64-unknown-linux -emit-llvm -fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-VPTR --check-prefix=ITANIUM -// RUN: %clang_cc1 -std=c++11 -triple x86_64-windows -emit-llvm -fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-VPTR --check-prefix=MSABI +// RUN: %clang_cc1 -std=c++11 -triple x86_64-windows -emit-llvm -fsanitize=null,vptr %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-VPTR --check-prefix=MSABI --check-prefix=CHECK-VPTR-MS struct T { virtual ~T() {} virtual int v() { return 1; } @@ -14,6 +14,8 @@ struct U : T { U::~U() {} +// CHECK-VPTR-MS: @__ubsan_vptr_type_cache = external dso_local + // ITANIUM: define i32 @_Z5get_vP1T // MSABI: define dso_local i32 @"?get_v int get_v(T* t) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328224 - Set dso_local on builtin functions.
Author: rafael Date: Thu Mar 22 11:03:13 2018 New Revision: 328224 URL: http://llvm.org/viewvc/llvm-project?rev=328224&view=rev Log: Set dso_local on builtin functions. The difference between CreateRuntimeFunction and CreateBuiltinFunction is that CreateBuiltinFunction would not set dllimport or dso_local. To keep the current semantics, just forward to CreateRuntimeFunction with Local=true so it doesn't add dllimport. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGen/mingw-long-double.c Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328224&r1=328223&r2=328224&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Mar 22 11:03:13 2018 @@ -2640,13 +2640,7 @@ CodeGenModule::CreateRuntimeFunction(llv llvm::Constant * CodeGenModule::CreateBuiltinFunction(llvm::FunctionType *FTy, StringRef Name, llvm::AttributeList ExtraAttrs) { - llvm::Constant *C = - GetOrCreateLLVMFunction(Name, FTy, GlobalDecl(), /*ForVTable=*/false, - /*DontDefer=*/false, /*IsThunk=*/false, ExtraAttrs); - if (auto *F = dyn_cast(C)) -if (F->empty()) - F->setCallingConv(getRuntimeCC()); - return C; + return CreateRuntimeFunction(FTy, Name, ExtraAttrs, true); } /// isTypeConstant - Determine whether an object of this type can be emitted Modified: cfe/trunk/test/CodeGen/mingw-long-double.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/mingw-long-double.c?rev=328224&r1=328223&r2=328224&view=diff == --- cfe/trunk/test/CodeGen/mingw-long-double.c (original) +++ cfe/trunk/test/CodeGen/mingw-long-double.c Thu Mar 22 11:03:13 2018 @@ -42,6 +42,6 @@ long double _Complex TestLDC(long double // GNU64: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* %x) // MSC64: define dso_local void @TestLDC({ double, double }* noalias sret %agg.result, { double, double }* %x) -// GNU32: declare void @__mulxc3 -// GNU64: declare void @__mulxc3 -// MSC64: declare void @__muldc3 +// GNU32: declare dso_local void @__mulxc3 +// GNU64: declare dso_local void @__mulxc3 +// MSC64: declare dso_local void @__muldc3 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328238 - Set dso_local on vtables.
Author: rafael Date: Thu Mar 22 13:33:01 2018 New Revision: 328238 URL: http://llvm.org/viewvc/llvm-project?rev=328238&view=rev Log: Set dso_local on vtables. Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGenCXX/dllexport.cpp Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=328238&r1=328237&r2=328238&view=diff == --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Mar 22 13:33:01 2018 @@ -2848,6 +2848,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin const char *VTableName = nullptr; + const CXXRecordDecl *RD = nullptr; switch (Ty->getTypeClass()) { #define TYPE(Class, Base) #define ABSTRACT_TYPE(Class, Base) @@ -2899,8 +2900,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin break; case Type::Record: { -const CXXRecordDecl *RD = - cast(cast(Ty)->getDecl()); +RD = cast(cast(Ty)->getDecl()); if (!RD->hasDefinition() || !RD->getNumBases()) { VTableName = ClassTypeInfo; @@ -2948,6 +2948,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin llvm::Constant *VTable = CGM.getModule().getOrInsertGlobal(VTableName, CGM.Int8PtrTy); + CGM.setGVProperties(cast(VTable->stripPointerCasts()), RD); llvm::Type *PtrDiffTy = CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328238&r1=328237&r2=328238&view=diff == --- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original) +++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 13:33:01 2018 @@ -41,6 +41,8 @@ struct External { int v; }; // GNU-NOT: @ExternGlobalDecl __declspec(dllexport) extern int ExternGlobalDecl; +// GNU-DAG: @_ZTVN10__cxxabiv117__class_type_infoE = external dso_local global + // dllexport implies a definition. // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328242 - Revert "Set dso_local on vtables."
Author: rafael Date: Thu Mar 22 14:14:16 2018 New Revision: 328242 URL: http://llvm.org/viewvc/llvm-project?rev=328242&view=rev Log: Revert "Set dso_local on vtables." This reverts commit r328238. Looks like it broke some buildbots. Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGenCXX/dllexport.cpp Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=328242&r1=328241&r2=328242&view=diff == --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Mar 22 14:14:16 2018 @@ -2848,7 +2848,6 @@ void ItaniumRTTIBuilder::BuildVTablePoin const char *VTableName = nullptr; - const CXXRecordDecl *RD = nullptr; switch (Ty->getTypeClass()) { #define TYPE(Class, Base) #define ABSTRACT_TYPE(Class, Base) @@ -2900,7 +2899,8 @@ void ItaniumRTTIBuilder::BuildVTablePoin break; case Type::Record: { -RD = cast(cast(Ty)->getDecl()); +const CXXRecordDecl *RD = + cast(cast(Ty)->getDecl()); if (!RD->hasDefinition() || !RD->getNumBases()) { VTableName = ClassTypeInfo; @@ -2948,7 +2948,6 @@ void ItaniumRTTIBuilder::BuildVTablePoin llvm::Constant *VTable = CGM.getModule().getOrInsertGlobal(VTableName, CGM.Int8PtrTy); - CGM.setGVProperties(cast(VTable->stripPointerCasts()), RD); llvm::Type *PtrDiffTy = CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328242&r1=328241&r2=328242&view=diff == --- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original) +++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 14:14:16 2018 @@ -41,8 +41,6 @@ struct External { int v; }; // GNU-NOT: @ExternGlobalDecl __declspec(dllexport) extern int ExternGlobalDecl; -// GNU-DAG: @_ZTVN10__cxxabiv117__class_type_infoE = external dso_local global - // dllexport implies a definition. // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328263 - Add a test.
Author: rafael Date: Thu Mar 22 15:57:48 2018 New Revision: 328263 URL: http://llvm.org/viewvc/llvm-project?rev=328263&view=rev Log: Add a test. This would have found the regression in r328238. Added: cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp Added: cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp?rev=328263&view=auto == --- cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp (added) +++ cfe/trunk/test/CodeGenCXX/rtti-hidden.cpp Thu Mar 22 15:57:48 2018 @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 %s -triple=x86_64-pc-linux -emit-llvm -o - | FileCheck %s + +// Test that this is not hidden. +// CHECK: @_ZTVN10__cxxabiv120__si_class_type_infoE = external global + +class foo { + virtual void baz(); +}; +struct __attribute__((__visibility__("hidden"))) bar : public foo {}; +bar zed; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328266 - Set dso_local on __ImageBase.
Author: rafael Date: Thu Mar 22 16:02:19 2018 New Revision: 328266 URL: http://llvm.org/viewvc/llvm-project?rev=328266&view=rev Log: Set dso_local on __ImageBase. Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp cfe/trunk/test/CodeGenCXX/dllexport.cpp Modified: cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp?rev=328266&r1=328265&r2=328266&view=diff == --- cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp Thu Mar 22 16:02:19 2018 @@ -523,10 +523,12 @@ public: if (llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name)) return GV; -return new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty, -/*isConstant=*/true, -llvm::GlobalValue::ExternalLinkage, -/*Initializer=*/nullptr, Name); +auto *GV = new llvm::GlobalVariable(CGM.getModule(), CGM.Int8Ty, +/*isConstant=*/true, +llvm::GlobalValue::ExternalLinkage, +/*Initializer=*/nullptr, Name); +CGM.setDSOLocal(GV); +return GV; } llvm::Constant *getImageRelativeConstant(llvm::Constant *PtrVal) { Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328266&r1=328265&r2=328266&view=diff == --- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original) +++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 16:02:19 2018 @@ -41,6 +41,8 @@ struct External { int v; }; // GNU-NOT: @ExternGlobalDecl __declspec(dllexport) extern int ExternGlobalDecl; +// M64-DAG: @__ImageBase = external dso_local constant i8 + // dllexport implies a definition. // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328288 - Bring r328238 back with a fix.
Author: rafael Date: Thu Mar 22 18:36:23 2018 New Revision: 328288 URL: http://llvm.org/viewvc/llvm-project?rev=328288&view=rev Log: Bring r328238 back with a fix. The issues was that we were setting hidden visibility if, when processing a hidden class, we found out that we needed to emit a reference to a vtable provided by the standard library. Original message: Set dso_local on vtables. Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGenCXX/dllexport.cpp Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=328288&r1=328287&r2=328288&view=diff == --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Mar 22 18:36:23 2018 @@ -2948,6 +2948,7 @@ void ItaniumRTTIBuilder::BuildVTablePoin llvm::Constant *VTable = CGM.getModule().getOrInsertGlobal(VTableName, CGM.Int8PtrTy); + CGM.setDSOLocal(cast(VTable->stripPointerCasts())); llvm::Type *PtrDiffTy = CGM.getTypes().ConvertType(CGM.getContext().getPointerDiffType()); Modified: cfe/trunk/test/CodeGenCXX/dllexport.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllexport.cpp?rev=328288&r1=328287&r2=328288&view=diff == --- cfe/trunk/test/CodeGenCXX/dllexport.cpp (original) +++ cfe/trunk/test/CodeGenCXX/dllexport.cpp Thu Mar 22 18:36:23 2018 @@ -43,6 +43,8 @@ __declspec(dllexport) extern int ExternG // M64-DAG: @__ImageBase = external dso_local constant i8 +// GNU-DAG: @_ZTVN10__cxxabiv117__class_type_infoE = external dso_local global + // dllexport implies a definition. // MSC-DAG: @"?GlobalDef@@3HA" = dso_local dllexport global i32 0, align 4 // GNU-DAG: @GlobalDef= dso_local dllexport global i32 0, align 4 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328800 - Add a dllimport test.
Author: rafael Date: Thu Mar 29 09:35:52 2018 New Revision: 328800 URL: http://llvm.org/viewvc/llvm-project?rev=328800&view=rev Log: Add a dllimport test. Thanks to rnk for the suggestion. Added: cfe/trunk/test/CodeGen/flip-dllimport.c Added: cfe/trunk/test/CodeGen/flip-dllimport.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/flip-dllimport.c?rev=328800&view=auto == --- cfe/trunk/test/CodeGen/flip-dllimport.c (added) +++ cfe/trunk/test/CodeGen/flip-dllimport.c Thu Mar 29 09:35:52 2018 @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -triple x86_64-windows-msvc -fms-extensions -emit-llvm -o - %s | FileCheck %s + +__declspec(dllimport) void f(); +void g() { f(); } // use it + +// CHECK: define dso_local dllexport void @f +void f() { } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328801 - Set dso_local when clearing dllimport.
Author: rafael Date: Thu Mar 29 09:45:18 2018 New Revision: 328801 URL: http://llvm.org/viewvc/llvm-project?rev=328801&view=rev Log: Set dso_local when clearing dllimport. Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/test/CodeGenCXX/dllimport.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=328801&r1=328800&r2=328801&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Mar 29 09:45:18 2018 @@ -2398,8 +2398,10 @@ llvm::Constant *CodeGenModule::GetOrCrea } // Handle dropped DLL attributes. -if (D && !D->hasAttr() && !D->hasAttr()) +if (D && !D->hasAttr() && !D->hasAttr()) { Entry->setDLLStorageClass(llvm::GlobalValue::DefaultStorageClass); + setDSOLocal(Entry); +} // If there are two attempts to define the same mangled name, issue an // error. Modified: cfe/trunk/test/CodeGenCXX/dllimport.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dllimport.cpp?rev=328801&r1=328800&r2=328801&view=diff == --- cfe/trunk/test/CodeGenCXX/dllimport.cpp (original) +++ cfe/trunk/test/CodeGenCXX/dllimport.cpp Thu Mar 29 09:45:18 2018 @@ -203,6 +203,8 @@ USEVAR(VarTmpl) // Functions //===--===// +// GNU-DAG: declare dso_local void @_ZdlPv(i8*) + // Import function declaration. // MSC-DAG: declare dllimport void @"?decl@@YAXXZ"() // GNU-DAG: declare dllimport void @_Z4declv() ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328825 - Mark __cfi_check as dso_local.
Author: rafael Date: Thu Mar 29 13:51:30 2018 New Revision: 328825 URL: http://llvm.org/viewvc/llvm-project?rev=328825&view=rev Log: Mark __cfi_check as dso_local. Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=328825&r1=328824&r2=328825&view=diff == --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Thu Mar 29 13:51:30 2018 @@ -3010,6 +3010,7 @@ void CodeGenFunction::EmitCfiCheckStub() llvm::Function *F = llvm::Function::Create( llvm::FunctionType::get(VoidTy, {Int64Ty, Int8PtrTy, Int8PtrTy}, false), llvm::GlobalValue::WeakAnyLinkage, "__cfi_check", M); + CGM.setDSOLocal(F); llvm::BasicBlock *BB = llvm::BasicBlock::Create(Ctx, "entry", F); // FIXME: consider emitting an intrinsic call like // call void @llvm.cfi_check(i64 %0, i8* %1, i8* %2) Modified: cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c?rev=328825&r1=328824&r2=328825&view=diff == --- cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c (original) +++ cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c Thu Mar 29 13:51:30 2018 @@ -66,6 +66,9 @@ Fn h1() { inline void foo() {} void bar() { foo(); } +// ITANIUM: define weak void @__cfi_check +// MS: define weak dso_local void @__cfi_check + // CHECK: !{i32 4, !"Cross-DSO CFI", i32 1} // Check that the type entries are correct. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r328836 - Set dso_local on cfi_slowpath.
Author: rafael Date: Thu Mar 29 15:08:01 2018 New Revision: 328836 URL: http://llvm.org/viewvc/llvm-project?rev=328836&view=rev Log: Set dso_local on cfi_slowpath. Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=328836&r1=328835&r2=328836&view=diff == --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Thu Mar 29 15:08:01 2018 @@ -2975,6 +2975,7 @@ void CodeGenFunction::EmitCfiSlowPathChe bool WithDiag = !CGM.getCodeGenOpts().SanitizeTrap.has(Kind); llvm::CallInst *CheckCall; + llvm::Constant *SlowPathFn; if (WithDiag) { llvm::Constant *Info = llvm::ConstantStruct::getAnon(StaticArgs); auto *InfoPtr = @@ -2983,20 +2984,20 @@ void CodeGenFunction::EmitCfiSlowPathChe InfoPtr->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); CGM.getSanitizerMetadata()->disableSanitizerForGlobal(InfoPtr); -llvm::Constant *SlowPathDiagFn = CGM.getModule().getOrInsertFunction( +SlowPathFn = CGM.getModule().getOrInsertFunction( "__cfi_slowpath_diag", llvm::FunctionType::get(VoidTy, {Int64Ty, Int8PtrTy, Int8PtrTy}, false)); CheckCall = Builder.CreateCall( -SlowPathDiagFn, -{TypeId, Ptr, Builder.CreateBitCast(InfoPtr, Int8PtrTy)}); +SlowPathFn, {TypeId, Ptr, Builder.CreateBitCast(InfoPtr, Int8PtrTy)}); } else { -llvm::Constant *SlowPathFn = CGM.getModule().getOrInsertFunction( +SlowPathFn = CGM.getModule().getOrInsertFunction( "__cfi_slowpath", llvm::FunctionType::get(VoidTy, {Int64Ty, Int8PtrTy}, false)); CheckCall = Builder.CreateCall(SlowPathFn, {TypeId, Ptr}); } + CGM.setDSOLocal(cast(SlowPathFn->stripPointerCasts())); CheckCall->setDoesNotThrow(); EmitBlock(Cont); Modified: cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c?rev=328836&r1=328835&r2=328836&view=diff == --- cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c (original) +++ cfe/trunk/test/CodeGen/cfi-icall-cross-dso.c Thu Mar 29 15:08:01 2018 @@ -39,6 +39,11 @@ // MS-DIAG: call void @__cfi_slowpath_diag(i64 4195979634929632483, i8* %{{.*}}, {{.*}}@[[DATA]]{{.*}}) {{.*}}, !nosanitize // MS-TRAP: call void @__cfi_slowpath(i64 4195979634929632483, i8* %{{.*}}) {{.*}}, !nosanitize +// ITANIUM-DIAG: declare void @__cfi_slowpath_diag( +// ITANIUM-TRAP: declare void @__cfi_slowpath( +// MS-DIAG: declare dso_local void @__cfi_slowpath_diag( +// MS-TRAP: declare dso_local void @__cfi_slowpath( + void caller(void (*f)()) { f(); } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r322318 - Make internal/private GVs implicitly dso_local.
Author: rafael Date: Thu Jan 11 14:15:12 2018 New Revision: 322318 URL: http://llvm.org/viewvc/llvm-project?rev=322318&view=rev Log: Make internal/private GVs implicitly dso_local. While updating clang tests for having clang set dso_local I noticed that: - There are *a lot* of tests to update. - Many of the updates are redundant. They are redundant because a GV is "obviously dso_local". This patch starts formalizing that a bit by requiring that internal and private GVs be dso_local too. Since they all are, we don't have to print dso_local to the textual representation, making it a bit more compact and easier to read. Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp cfe/trunk/test/OpenMP/target_codegen_registration.cpp cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp cfe/trunk/test/OpenMP/target_teams_codegen_registration.cpp cfe/trunk/test/OpenMP/target_teams_distribute_codegen_registration.cpp cfe/trunk/test/OpenMP/target_teams_distribute_simd_codegen_registration.cpp Modified: cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp?rev=322318&r1=322317&r2=322318&view=diff == --- cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp (original) +++ cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp Thu Jan 11 14:15:12 2018 @@ -5912,6 +5912,7 @@ void CGOpenMPRuntime::emitTargetOutlined if (CGM.getLangOpts().OpenMPIsDevice) { OutlinedFnID = llvm::ConstantExpr::getBitCast(OutlinedFn, CGM.Int8PtrTy); OutlinedFn->setLinkage(llvm::GlobalValue::ExternalLinkage); +OutlinedFn->setDSOLocal(false); } else OutlinedFnID = new llvm::GlobalVariable( CGM.getModule(), CGM.Int8Ty, /*isConstant=*/true, Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp?rev=322318&r1=322317&r2=322318&view=diff == --- cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp (original) +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-static-initializers.cpp Thu Jan 11 14:15:12 2018 @@ -28,11 +28,11 @@ S s; // See @llvm.global_ctors above. __declspec(selectany) S selectany1; __declspec(selectany) S selectany2; -// CHECK: define linkonce_odr void @"\01??__Eselectany1@@YAXXZ"() {{.*}} comdat +// CHECK: define linkonce_odr dso_local void @"\01??__Eselectany1@@YAXXZ"() {{.*}} comdat // CHECK-NOT: @"\01??_Bselectany1 // CHECK: call x86_thiscallcc %struct.S* @"\01??0S@@QAE@XZ" // CHECK: ret void -// CHECK: define linkonce_odr void @"\01??__Eselectany2@@YAXXZ"() {{.*}} comdat +// CHECK: define linkonce_odr dso_local void @"\01??__Eselectany2@@YAXXZ"() {{.*}} comdat // CHECK-NOT: @"\01??_Bselectany2 // CHECK: call x86_thiscallcc %struct.S* @"\01??0S@@QAE@XZ" // CHECK: ret void @@ -231,7 +231,7 @@ void force_usage() { DynamicDLLImportInitVSMangling::switch_test3(); } -// CHECK: define linkonce_odr void @"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() {{.*}} comdat +// CHECK: define linkonce_odr dso_local void @"\01??__Efoo@?$B@H@@2VA@@A@YAXXZ"() {{.*}} comdat // CHECK-NOT: and // CHECK-NOT: ?_Bfoo@ // CHECK: call x86_thiscallcc %class.A* @"\01??0A@@QAE@XZ" Modified: cfe/trunk/test/OpenMP/target_codegen_registration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_codegen_registration.cpp?rev=322318&r1=322317&r2=322318&view=diff == --- cfe/trunk/test/OpenMP/target_codegen_registration.cpp (original) +++ cfe/trunk/test/OpenMP/target_codegen_registration.cpp Thu Jan 11 14:15:12 2018 @@ -393,7 +393,7 @@ struct ST { //CHECK: ret void //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*) -//CHECK: define linkonce hidden void @[[REGFN]](i8*) +//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*) //CHECK-SAME: comdat { //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]]) //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*), Modified: cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp?rev=322318&r1=322317&r2=322318&view=diff == --- cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp (original) +++ cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp Thu Jan 11 14:15:1
r322792 - Use an enum value instead of a string.
Author: rafael Date: Wed Jan 17 16:20:03 2018 New Revision: 322792 URL: http://llvm.org/viewvc/llvm-project?rev=322792&view=rev Log: Use an enum value instead of a string. The old StringSwitch use was also broken. It assumed that a StringSwitch returns Optional instead of T and was missing a .Default. Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.h cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/lib/Frontend/CodeGenOptions.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.h?rev=322792&r1=322791&r2=322792&view=diff == --- cfe/trunk/include/clang/Frontend/CodeGenOptions.h (original) +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.h Wed Jan 17 16:20:03 2018 @@ -16,6 +16,7 @@ #include "clang/Basic/DebugInfoOptions.h" #include "clang/Basic/Sanitizers.h" +#include "llvm/Support/CodeGen.h" #include "llvm/Support/Regex.h" #include "llvm/Target/TargetOptions.h" #include @@ -167,7 +168,7 @@ public: std::string SplitDwarfFile; /// The name of the relocation model to use. - std::string RelocationModel; + llvm::Reloc::Model RelocationModel; /// The thread model to use std::string ThreadModel; Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=322792&r1=322791&r2=322792&view=diff == --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed Jan 17 16:20:03 2018 @@ -362,21 +362,6 @@ getCodeModel(const CodeGenOptions &CodeG return static_cast(CodeModel); } -static llvm::Reloc::Model getRelocModel(const CodeGenOptions &CodeGenOpts) { - // Keep this synced with the equivalent code in - // lib/Frontend/CompilerInvocation.cpp - llvm::Optional RM; - RM = llvm::StringSwitch(CodeGenOpts.RelocationModel) - .Case("static", llvm::Reloc::Static) - .Case("pic", llvm::Reloc::PIC_) - .Case("ropi", llvm::Reloc::ROPI) - .Case("rwpi", llvm::Reloc::RWPI) - .Case("ropi-rwpi", llvm::Reloc::ROPI_RWPI) - .Case("dynamic-no-pic", llvm::Reloc::DynamicNoPIC); - assert(RM.hasValue() && "invalid PIC model!"); - return *RM; -} - static TargetMachine::CodeGenFileType getCodeGenFileType(BackendAction Action) { if (Action == Backend_EmitObj) return TargetMachine::CGFT_ObjectFile; @@ -692,7 +677,7 @@ void EmitAssemblyHelper::CreateTargetMac Optional CM = getCodeModel(CodeGenOpts); std::string FeaturesStr = llvm::join(TargetOpts.Features.begin(), TargetOpts.Features.end(), ","); - llvm::Reloc::Model RM = getRelocModel(CodeGenOpts); + llvm::Reloc::Model RM = CodeGenOpts.RelocationModel; CodeGenOpt::Level OptLevel = getCGOptLevel(CodeGenOpts); llvm::TargetOptions Options; @@ -1113,7 +1098,7 @@ static void runThinLTOBackend(ModuleSumm Conf.CPU = TOpts.CPU; Conf.CodeModel = getCodeModel(CGOpts); Conf.MAttrs = TOpts.Features; - Conf.RelocModel = getRelocModel(CGOpts); + Conf.RelocModel = CGOpts.RelocationModel; Conf.CGOptLevel = getCGOptLevel(CGOpts); initTargetOptions(Conf.Options, CGOpts, TOpts, LOpts, HeaderOpts); Conf.SampleProfile = std::move(SampleProfile); Modified: cfe/trunk/lib/Frontend/CodeGenOptions.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CodeGenOptions.cpp?rev=322792&r1=322791&r2=322792&view=diff == --- cfe/trunk/lib/Frontend/CodeGenOptions.cpp (original) +++ cfe/trunk/lib/Frontend/CodeGenOptions.cpp Wed Jan 17 16:20:03 2018 @@ -17,7 +17,7 @@ CodeGenOptions::CodeGenOptions() { #define ENUM_CODEGENOPT(Name, Type, Bits, Default) set##Name(Default); #include "clang/Frontend/CodeGenOptions.def" - RelocationModel = "pic"; + RelocationModel = llvm::Reloc::PIC_; memcpy(CoverageVersion, "402*", 4); } Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=322792&r1=322791&r2=322792&view=diff == --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Wed Jan 17 16:20:03 2018 @@ -330,15 +330,23 @@ static StringRef getCodeModel(ArgList &A return "default"; } -static StringRef getRelocModel(ArgList &Args, DiagnosticsEngine &Diags) { +static llvm::Reloc::Model getRelocModel(ArgList &Args, +DiagnosticsEngine &Diags) { if (Arg *A = Args.getLastArg(OPT_mrelocation_model)) { StringRef Value = A->getValue(); -if (Value == "static" || Value == "pic" || Value == "ropi" || -Value == "rwpi" || Value
r322808 - Update for llvm change.
Author: rafael Date: Wed Jan 17 18:08:38 2018 New Revision: 322808 URL: http://llvm.org/viewvc/llvm-project?rev=322808&view=rev Log: Update for llvm change. Modified: cfe/trunk/test/OpenMP/target_codegen_registration.cpp cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp cfe/trunk/test/OpenMP/target_teams_codegen_registration.cpp cfe/trunk/test/OpenMP/target_teams_distribute_codegen_registration.cpp cfe/trunk/test/OpenMP/target_teams_distribute_parallel_for_simd_codegen_registration.cpp cfe/trunk/test/OpenMP/target_teams_distribute_simd_codegen_registration.cpp Modified: cfe/trunk/test/OpenMP/target_codegen_registration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_codegen_registration.cpp?rev=322808&r1=322807&r2=322808&view=diff == --- cfe/trunk/test/OpenMP/target_codegen_registration.cpp (original) +++ cfe/trunk/test/OpenMP/target_codegen_registration.cpp Wed Jan 17 18:08:38 2018 @@ -393,7 +393,7 @@ struct ST { //CHECK: ret void //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*) -//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*) +//CHECK: define linkonce hidden void @[[REGFN]](i8*) //CHECK-SAME: comdat { //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]]) //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*), Modified: cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp?rev=322808&r1=322807&r2=322808&view=diff == --- cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp (original) +++ cfe/trunk/test/OpenMP/target_parallel_codegen_registration.cpp Wed Jan 17 18:08:38 2018 @@ -393,7 +393,7 @@ struct ST { //CHECK: ret void //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*) -//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*) +//CHECK: define linkonce hidden void @[[REGFN]](i8*) //CHECK-SAME: comdat { //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]]) //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*), Modified: cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp?rev=322808&r1=322807&r2=322808&view=diff == --- cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp (original) +++ cfe/trunk/test/OpenMP/target_parallel_for_codegen_registration.cpp Wed Jan 17 18:08:38 2018 @@ -402,7 +402,7 @@ struct ST { //CHECK: ret void //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*) -//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*) +//CHECK: define linkonce hidden void @[[REGFN]](i8*) //CHECK-SAME: comdat { //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]]) //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*), Modified: cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp?rev=322808&r1=322807&r2=322808&view=diff == --- cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp (original) +++ cfe/trunk/test/OpenMP/target_parallel_for_simd_codegen_registration.cpp Wed Jan 17 18:08:38 2018 @@ -402,7 +402,7 @@ struct ST { //CHECK: ret void //CHECK: declare i32 @__tgt_unregister_lib([[DSCTY]]*) -//CHECK: define linkonce dso_local hidden void @[[REGFN]](i8*) +//CHECK: define linkonce hidden void @[[REGFN]](i8*) //CHECK-SAME: comdat { //CHECK: call i32 @__tgt_register_lib([[DSCTY]]* [[DESC]]) //CHECK: call i32 @__cxa_atexit(void (i8*)* @[[UNREGFN]], i8* bitcast ([[DSCTY]]* [[DESC]] to i8*), Modified: cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp?rev=322808&r1=322807&r2=322808&view=diff == --- cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp (original) +++ cfe/trunk/test/OpenMP/target_simd_codegen_registration.cpp Wed Jan 17 18:08:38 2018 @@ -402,7 +402,7 @@ struct ST { //CHECK: ret void //CHECK: declare i32
r323361 - Don't create hidden dllimport global values.
Author: rafael Date: Wed Jan 24 10:58:32 2018 New Revision: 323361 URL: http://llvm.org/viewvc/llvm-project?rev=323361&view=rev Log: Don't create hidden dllimport global values. Hidden visibility is almost the opposite of dllimport. We were producing them before (dllimport wins in the existing llvm implementation), but now the llvm verifier produces an error. Added: cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=323361&r1=323360&r2=323361&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Jan 24 10:58:32 2018 @@ -694,6 +694,8 @@ llvm::ConstantInt *CodeGenModule::getSiz void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV, const NamedDecl *D, ForDefinition_t IsForDefinition) const { + if (GV->hasDLLImportStorageClass()) +return; // Internal definitions always have default visibility. if (GV->hasLocalLinkage()) { GV->setVisibility(llvm::GlobalValue::DefaultVisibility); Added: cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp?rev=323361&view=auto == --- cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp (added) +++ cfe/trunk/test/CodeGenCXX/hidden-dllimport.cpp Wed Jan 24 10:58:32 2018 @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -emit-llvm -fvisibility-inlines-hidden -o - %s | FileCheck %s + +// We used to declare this hidden dllimport, which is contradictory. + +// CHECK: declare dllimport void @"\01?bar@foo@@QEAAXXZ"(%struct.foo*) + +struct __attribute__((dllimport)) foo { + void bar() {} +}; +void zed(foo *p) { p->bar(); } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r324107 - Start setting dso_local in clang.
Author: rafael Date: Fri Feb 2 09:17:39 2018 New Revision: 324107 URL: http://llvm.org/viewvc/llvm-project?rev=324107&view=rev Log: Start setting dso_local in clang. This starts adding dso_local to clang. The hope is to eventually have TargetMachine::shouldAssumeDsoLocal go away. My objective for now is to move enough of it to clang to remove the need for the TargetMachine one to handle PIE copy relocations and -fno-plt. With that it should then be easy to implement a -fno-copy-reloc in clang. This patch just adds the cases where we assume a symbol to be local based on the file being compiled for an executable or a shared library. Added: cfe/trunk/test/CodeGen/dso-local-executable.c cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp cfe/trunk/lib/CodeGen/CGVTT.cpp cfe/trunk/lib/CodeGen/CGVTables.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGen/mbackchain-2.c cfe/trunk/test/CodeGen/mbackchain-3.c cfe/trunk/test/CodeGen/mips-vector-return.c cfe/trunk/test/CodeGen/split-stacks.c cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp cfe/trunk/test/CodeGenCXX/debug-info-template.cpp cfe/trunk/test/CodeGenCXX/float16-declarations.cpp cfe/trunk/test/CodeGenCXX/split-stacks.cpp cfe/trunk/test/Driver/lanai-unknown-unknown.cpp cfe/trunk/test/Driver/le32-unknown-nacl.cpp cfe/trunk/test/Driver/le64-unknown-unknown.cpp cfe/trunk/test/Driver/riscv32-toolchain.c cfe/trunk/test/Driver/riscv64-toolchain.c cfe/trunk/test/Frontend/ast-codegen.c Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324107&r1=324106&r2=324107&view=diff == --- cfe/trunk/lib/CodeGen/CGDecl.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDecl.cpp Fri Feb 2 09:17:39 2018 @@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name, nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS); GV->setAlignment(getContext().getDeclAlign(&D).getQuantity()); - setGlobalVisibility(GV, &D, ForDefinition); + setGVProperties(GV, &D, ForDefinition); if (supportsCOMDAT() && GV->isWeakForLinker()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); @@ -344,6 +344,7 @@ CodeGenFunction::AddInitializerToStaticV OldGV->getThreadLocalMode(), CGM.getContext().getTargetAddressSpace(D.getType())); GV->setVisibility(OldGV->getVisibility()); +GV->setDSOLocal(OldGV->isDSOLocal()); GV->setComdat(OldGV->getComdat()); // Steal the name of the old global Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324107&r1=324106&r2=324107&view=diff == --- cfe/trunk/lib/CodeGen/CGVTT.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTT.cpp Fri Feb 2 09:17:39 2018 @@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm:: VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName())); // Set the right visibility. - CGM.setGlobalVisibility(VTT, RD, ForDefinition); + CGM.setGVProperties(VTT, RD, ForDefinition); } llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324107&r1=324106&r2=324107&view=diff == --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Fri Feb 2 09:17:39 2018 @@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD, const ThunkInfo &Thunk, llvm::Function *Fn) { - CGM.setGlobalVisibility(Fn, MD, ForDefinition); + CGM.setGVProperties(Fn, MD, ForDefinition); } static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk, @@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab // Create the variable that will hold the construction vtable. llvm::GlobalVariable *VTable = CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage); - CGM.setGlobalVisibility(VTable, RD, ForDefinition); + CGM.setGVProperties(VTable, RD, ForDefinition); // V-tables are always unnamed_addr. VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324107&r1=324106&r2=324107&view=diff ==
r324108 - Revert "Start setting dso_local in clang."
Author: rafael Date: Fri Feb 2 09:29:22 2018 New Revision: 324108 URL: http://llvm.org/viewvc/llvm-project?rev=324108&view=rev Log: Revert "Start setting dso_local in clang." This reverts commit r324107. I will have to test it on OS X. Removed: cfe/trunk/test/CodeGen/dso-local-executable.c cfe/trunk/test/CodeGenCXX/dso-local-executable.cpp Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp cfe/trunk/lib/CodeGen/CGVTT.cpp cfe/trunk/lib/CodeGen/CGVTables.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/CodeGen/CodeGenModule.h cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGen/mbackchain-2.c cfe/trunk/test/CodeGen/mbackchain-3.c cfe/trunk/test/CodeGen/mips-vector-return.c cfe/trunk/test/CodeGen/split-stacks.c cfe/trunk/test/CodeGenCXX/debug-info-static-member.cpp cfe/trunk/test/CodeGenCXX/debug-info-template.cpp cfe/trunk/test/CodeGenCXX/float16-declarations.cpp cfe/trunk/test/CodeGenCXX/split-stacks.cpp cfe/trunk/test/Driver/lanai-unknown-unknown.cpp cfe/trunk/test/Driver/le32-unknown-nacl.cpp cfe/trunk/test/Driver/le64-unknown-unknown.cpp cfe/trunk/test/Driver/riscv32-toolchain.c cfe/trunk/test/Driver/riscv64-toolchain.c cfe/trunk/test/Frontend/ast-codegen.c Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=324108&r1=324107&r2=324108&view=diff == --- cfe/trunk/lib/CodeGen/CGDecl.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDecl.cpp Fri Feb 2 09:29:22 2018 @@ -240,7 +240,7 @@ llvm::Constant *CodeGenModule::getOrCrea getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name, nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS); GV->setAlignment(getContext().getDeclAlign(&D).getQuantity()); - setGVProperties(GV, &D, ForDefinition); + setGlobalVisibility(GV, &D, ForDefinition); if (supportsCOMDAT() && GV->isWeakForLinker()) GV->setComdat(TheModule.getOrInsertComdat(GV->getName())); @@ -344,7 +344,6 @@ CodeGenFunction::AddInitializerToStaticV OldGV->getThreadLocalMode(), CGM.getContext().getTargetAddressSpace(D.getType())); GV->setVisibility(OldGV->getVisibility()); -GV->setDSOLocal(OldGV->isDSOLocal()); GV->setComdat(OldGV->getComdat()); // Steal the name of the old global Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=324108&r1=324107&r2=324108&view=diff == --- cfe/trunk/lib/CodeGen/CGVTT.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTT.cpp Fri Feb 2 09:29:22 2018 @@ -100,7 +100,7 @@ CodeGenVTables::EmitVTTDefinition(llvm:: VTT->setComdat(CGM.getModule().getOrInsertComdat(VTT->getName())); // Set the right visibility. - CGM.setGVProperties(VTT, RD, ForDefinition); + CGM.setGlobalVisibility(VTT, RD, ForDefinition); } llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { Modified: cfe/trunk/lib/CodeGen/CGVTables.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTables.cpp?rev=324108&r1=324107&r2=324108&view=diff == --- cfe/trunk/lib/CodeGen/CGVTables.cpp (original) +++ cfe/trunk/lib/CodeGen/CGVTables.cpp Fri Feb 2 09:29:22 2018 @@ -51,7 +51,7 @@ llvm::Constant *CodeGenModule::GetAddrOf static void setThunkVisibility(CodeGenModule &CGM, const CXXMethodDecl *MD, const ThunkInfo &Thunk, llvm::Function *Fn) { - CGM.setGVProperties(Fn, MD, ForDefinition); + CGM.setGlobalVisibility(Fn, MD, ForDefinition); } static void setThunkProperties(CodeGenModule &CGM, const ThunkInfo &Thunk, @@ -730,7 +730,7 @@ CodeGenVTables::GenerateConstructionVTab // Create the variable that will hold the construction vtable. llvm::GlobalVariable *VTable = CGM.CreateOrReplaceCXXRuntimeVariable(Name, VTType, Linkage); - CGM.setGVProperties(VTable, RD, ForDefinition); + CGM.setGlobalVisibility(VTable, RD, ForDefinition); // V-tables are always unnamed_addr. VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=324108&r1=324107&r2=324108&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Fri Feb 2 09:29:22 2018 @@ -717,63 +717,6 @@ void CodeGenModule::setGlobalVisibility( GV->setVisibility(GetLLVMVisibility(LV.getVisibility())); } -static bool shouldAssumeDSOLocal(const CodeGenModule &CGM, - llvm::GlobalValue
r295245 - Fix the static build.
Author: rafael Date: Wed Feb 15 16:19:04 2017 New Revision: 295245 URL: http://llvm.org/viewvc/llvm-project?rev=295245&view=rev Log: Fix the static build. Modified: cfe/trunk/tools/c-index-test/CMakeLists.txt Modified: cfe/trunk/tools/c-index-test/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/CMakeLists.txt?rev=295245&r1=295244&r2=295245&view=diff == --- cfe/trunk/tools/c-index-test/CMakeLists.txt (original) +++ cfe/trunk/tools/c-index-test/CMakeLists.txt Wed Feb 15 16:19:04 2017 @@ -17,6 +17,7 @@ endif() if (LLVM_BUILD_STATIC) target_link_libraries(c-index-test libclang_static +clangCodeGen clangIndex ) else() ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r285561 - Fix this test when we have clang-offload-bundler.exe.
Author: rafael Date: Mon Oct 31 06:47:37 2016 New Revision: 285561 URL: http://llvm.org/viewvc/llvm-project?rev=285561&view=rev Log: Fix this test when we have clang-offload-bundler.exe. Modified: cfe/trunk/test/Driver/openmp-offload.c Modified: cfe/trunk/test/Driver/openmp-offload.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/openmp-offload.c?rev=285561&r1=285560&r2=285561&view=diff == --- cfe/trunk/test/Driver/openmp-offload.c (original) +++ cfe/trunk/test/Driver/openmp-offload.c Mon Oct 31 06:47:37 2016 @@ -422,13 +422,13 @@ // Create host object and bundle. // CHK-BUJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le--linux" "-emit-obj" {{.*}}"-fopenmp" {{.*}}"-o" " // CHK-BUJOBS-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "-x" "ir" "{{.*}}[[HOSTBC]]" -// CHK-BUJOBS: clang-offload-bundler" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux" "-outputs= +// CHK-BUJOBS: clang-offload-bundler{{.*}}" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux" "-outputs= // CHK-BUJOBS-SAME: [[RES:[^\\/]+\.o]]" "-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]" // CHK-BUJOBS-ST: clang{{.*}}" "-cc1" "-triple" "powerpc64le--linux" "-S" {{.*}}"-fopenmp" {{.*}}"-o" " // CHK-BUJOBS-ST-SAME: [[HOSTASM:[^\\/]+\.s]]" "-x" "ir" "{{.*}}[[HOSTBC]]" // CHK-BUJOBS-ST: clang{{.*}}" "-cc1as" "-triple" "powerpc64le--linux" "-filetype" "obj" {{.*}}"-o" " // CHK-BUJOBS-ST-SAME: [[HOSTOBJ:[^\\/]+\.o]]" "{{.*}}[[HOSTASM]]" -// CHK-BUJOBS-ST: clang-offload-bundler" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux" "-outputs= +// CHK-BUJOBS-ST: clang-offload-bundler{{.*}}" "-type=o" "-targets=openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu,host-powerpc64le--linux" "-outputs= // CHK-BUJOBS-ST-SAME: [[RES:[^\\/]+\.o]]" "-inputs={{.*}}[[T1OBJ]],{{.*}}[[T2OBJ]],{{.*}}[[HOSTOBJ]]" /// ### @@ -446,14 +446,14 @@ // RUN: | FileCheck -check-prefix=CHK-UBJOBS2-ST %s // Unbundle and create host BC. -// CHK-UBJOBS: clang-offload-bundler" "-type=i" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= +// CHK-UBJOBS: clang-offload-bundler{{.*}}" "-type=i" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= // CHK-UBJOBS-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs= // CHK-UBJOBS-SAME: [[HOSTPP:[^\\/]+\.i]], // CHK-UBJOBS-SAME: [[T1PP:[^\\/]+\.i]], // CHK-UBJOBS-SAME: [[T2PP:[^\\/]+\.i]]" "-unbundle" // CHK-UBJOBS: clang{{.*}}" "-cc1" "-triple" "powerpc64le--linux" "-emit-llvm-bc" {{.*}}"-fopenmp" {{.*}}"-o" " // CHK-UBJOBS-SAME: [[HOSTBC:[^\\/]+\.bc]]" "-x" "cpp-output" "{{.*}}[[HOSTPP]]" "-fopenmp-targets=powerpc64le-ibm-linux-gnu,x86_64-pc-linux-gnu" -// CHK-UBJOBS-ST: clang-offload-bundler" "-type=i" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= +// CHK-UBJOBS-ST: clang-offload-bundler{{.*}}" "-type=i" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= // CHK-UBJOBS-ST-SAME: [[INPUT:[^\\/]+\.i]]" "-outputs= // CHK-UBJOBS-ST-SAME: [[HOSTPP:[^\\/,]+\.i]], // CHK-UBJOBS-ST-SAME: [[T1PP:[^\\/,]+\.i]], @@ -504,7 +504,7 @@ // CHK-UBJOBS-ST-SAME: [[LKS:[^\\/]+\.lk]]" // Unbundle object file. -// CHK-UBJOBS2: clang-offload-bundler" "-type=o" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= +// CHK-UBJOBS2: clang-offload-bundler{{.*}}" "-type=o" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= // CHK-UBJOBS2-SAME: [[INPUT:[^\\/]+\.o]]" "-outputs= // CHK-UBJOBS2-SAME: [[HOSTOBJ:[^\\/]+\.o]], // CHK-UBJOBS2-SAME: [[T1OBJ:[^\\/]+\.o]], @@ -516,7 +516,7 @@ // CHK-UBJOBS2: ld{{(\.exe)?}}" {{.*}}"-o" " // CHK-UBJOBS2-SAME: [[HOSTBIN:[^\\/]+\.out]]" {{.*}}"{{.*}}[[HOSTOBJ]]" {{.*}}"-T" " // CHK-UBJOBS2-SAME: [[LKS:[^\\/]+\.lk]]" -// CHK-UBJOBS2-ST: clang-offload-bundler" "-type=o" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= +// CHK-UBJOBS2-ST: clang-offload-bundler{{.*}}" "-type=o" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-gnu" "-inputs= // CHK-UBJOBS2-ST-SAME: [[INPUT:[^\\/]+\.o]]" "-outputs= // CHK-UBJOBS2-ST-SAME: [[HOSTOBJ:[^\\/,]+\.o]], // CHK-UBJOBS2-ST-SAME: [[T1OBJ:[^\\/,]+\.o]], @@ -540,7 +540,7 @@ // RUN: | FileCheck -check-prefix=CHK-UBUJOBS-ST %s // Unbundle and create host BC. -// CHK-UBUJOBS: clang-offload-bundler" "-type=i" "-targets=host-powerpc64le--linux,openmp-powerpc64le-ibm-linux-gnu,openmp-x86_64-pc-linux-g
r247144 - [Solaris] Use the GCC Installation detector to add the C++ include paths.
Author: rafael Date: Wed Sep 9 08:36:00 2015 New Revision: 247144 URL: http://llvm.org/viewvc/llvm-project?rev=247144&view=rev Log: [Solaris] Use the GCC Installation detector to add the C++ include paths. Patch by Xan López! Added: cfe/trunk/test/Driver/solaris-header-search.cpp Modified: cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/lib/Driver/ToolChains.h cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=247144&r1=247143&r2=247144&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Sep 9 08:36:00 2015 @@ -2962,6 +2962,31 @@ Tool *Solaris::buildAssembler() const { Tool *Solaris::buildLinker() const { return new tools::solaris::Linker(*this); } +void Solaris::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs, + ArgStringList &CC1Args) const { + if (DriverArgs.hasArg(options::OPT_nostdlibinc) || + DriverArgs.hasArg(options::OPT_nostdincxx)) +return; + + // Include the support directory for things like xlocale and fudged system + // headers. + addSystemInclude(DriverArgs, CC1Args, "/usr/include/c++/v1/support/solaris"); + + if (GCCInstallation.isValid()) { +GCCVersion Version = GCCInstallation.getVersion(); +addSystemInclude(DriverArgs, CC1Args, + getDriver().SysRoot + "/usr/gcc/" + + Version.MajorStr + "." + + Version.MinorStr + + "/include/c++/" + Version.Text); +addSystemInclude(DriverArgs, CC1Args, + getDriver().SysRoot + "/usr/gcc/" + Version.MajorStr + + "." + Version.MinorStr + "/include/c++/" + + Version.Text + "/" + + GCCInstallation.getTriple().str()); + } +} + /// Distribution (very bare-bones at the moment). enum Distro { Modified: cfe/trunk/lib/Driver/ToolChains.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=247144&r1=247143&r2=247144&view=diff == --- cfe/trunk/lib/Driver/ToolChains.h (original) +++ cfe/trunk/lib/Driver/ToolChains.h Wed Sep 9 08:36:00 2015 @@ -527,6 +527,10 @@ public: bool IsIntegratedAssemblerDefault() const override { return true; } + void AddClangCXXStdlibIncludeArgs( + const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const override; + protected: Tool *buildAssembler() const override; Tool *buildLinker() const override; Modified: cfe/trunk/lib/Frontend/InitHeaderSearch.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitHeaderSearch.cpp?rev=247144&r1=247143&r2=247144&view=diff == --- cfe/trunk/lib/Frontend/InitHeaderSearch.cpp (original) +++ cfe/trunk/lib/Frontend/InitHeaderSearch.cpp Wed Sep 9 08:36:00 2015 @@ -404,10 +404,6 @@ AddDefaultCPlusPlusIncludePaths(const ll AddGnuCPlusPlusIncludePaths("/usr/gnu/include/c++/4.4.3", "", "", "", triple); break; - case llvm::Triple::Solaris: -AddGnuCPlusPlusIncludePaths("/usr/gcc/4.5/include/c++/4.5.2/", -"i386-pc-solaris2.11", "", "", triple); -break; default: break; } @@ -453,11 +449,6 @@ void InitHeaderSearch::AddDefaultInclude AddUnmappedPath(P, CXXSystem, false); } } - // On Solaris, include the support directory for things like xlocale and - // fudged system headers. - if (triple.getOS() == llvm::Triple::Solaris) -AddPath("/usr/include/c++/v1/support/solaris", CXXSystem, false); - AddPath("/usr/include/c++/v1", CXXSystem, false); } else { AddDefaultCPlusPlusIncludePaths(triple, HSOpts); Added: cfe/trunk/test/Driver/solaris-header-search.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/solaris-header-search.cpp?rev=247144&view=auto == --- cfe/trunk/test/Driver/solaris-header-search.cpp (added) +++ cfe/trunk/test/Driver/solaris-header-search.cpp Wed Sep 9 08:36:00 2015 @@ -0,0 +1,11 @@ +// Test that the C++ headers are found. +// +// RUN: %clang -no-canonical-prefixes %s -### 2>&1 \ +// RUN: --target=sparc-sun-solaris2.11 \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/sparc-sun-solaris2.11 \ +// RUN: | FileCheck %s +// CHECK: "{{[^"]*}}clang{{[^"]*}}" "-cc1" +// CHECK: "-internal-isystem" "{{.*}}/usr/include/c++/v1/support/solaris" +// CHECK: "-internal-isystem" "{{.*}}/usr/gcc/4.8/include/c++/4.8.2" +// CHECK: "-internal-isystem" "{{.*}}/usr/gcc/4.8/include/c++/4.8.2/sp
r247603 - [Solaris] Add -lc also when linking shared libraries
Author: rafael Date: Mon Sep 14 14:30:53 2015 New Revision: 247603 URL: http://llvm.org/viewvc/llvm-project?rev=247603&view=rev Log: [Solaris] Add -lc also when linking shared libraries This is actually needed, otherwise libc won't be added at all. For instance when building libclang.so all the libc symbols won't be found, with ld warning about libc being an "implicit dependency". Patch by Xan López! Modified: cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/test/Driver/solaris-ld.c Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=247603&r1=247602&r2=247603&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Sep 14 14:30:53 2015 @@ -6962,9 +6962,9 @@ void solaris::Linker::ConstructJob(Compi if (getToolChain().getDriver().CCCIsCXX()) getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); CmdArgs.push_back("-lgcc_s"); +CmdArgs.push_back("-lc"); if (!Args.hasArg(options::OPT_shared)) { CmdArgs.push_back("-lgcc"); - CmdArgs.push_back("-lc"); CmdArgs.push_back("-lm"); } } Modified: cfe/trunk/test/Driver/solaris-ld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/solaris-ld.c?rev=247603&r1=247602&r2=247603&view=diff == --- cfe/trunk/test/Driver/solaris-ld.c (original) +++ cfe/trunk/test/Driver/solaris-ld.c Mon Sep 14 14:30:53 2015 @@ -14,3 +14,20 @@ // CHECK: "{{.*}}/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|}}crtbegin.o" // CHECK: "{{.*}}/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|}}crtend.o" // CHECK: "{{.*}}/usr/lib/crtn.o" +// CHECK "-lc" +// CHECK "-lgcc_s" +// CHECK "-lgcc" +// CHECK "-lm" + +// Check the right -l flags are present with -shared +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o -shared 2>&1 \ +// RUN: --target=sparc-sun-solaris2.11 \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/sparc-sun-solaris2.11 \ +// RUN: | FileCheck --check-prefix=CHECK-SHARED %s + +// CHECK-SHARED: ld{{.*}}" +// CHECK-SHARED "-lc" +// CHECK-SHARED "-lgcc_s" +// CHECK-SHARED-NOT "-lgcc" +// CHECK-SHARED-NOT: "-lm" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r247634 - [Solaris] Default to -fno-cxa-finalize.
Author: rafael Date: Mon Sep 14 18:21:31 2015 New Revision: 247634 URL: http://llvm.org/viewvc/llvm-project?rev=247634&view=rev Log: [Solaris] Default to -fno-cxa-finalize. There is no __cxa_finalize symbol available on recent Solaris OS versions, so we need this flag to make non trivial C++ programs run. Also stop looking for cxa_finalize.o, since it won't be there. Patch by Xan López! Added: cfe/trunk/test/Driver/solaris-opts.c Modified: cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=247634&r1=247633&r2=247634&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Sep 14 18:21:31 2015 @@ -4572,8 +4572,9 @@ void Clang::ConstructJob(Compilation &C, if (!Args.hasFlag(options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit, !IsWindowsCygnus && !IsWindowsGNU && -getToolChain().getArch() != llvm::Triple::hexagon && -getToolChain().getArch() != llvm::Triple::xcore) || +getToolChain().getTriple().getOS() != llvm::Triple::Solaris && +getToolChain().getArch() != llvm::Triple::hexagon && +getToolChain().getArch() != llvm::Triple::xcore) || KernelOrKext) CmdArgs.push_back("-fno-use-cxa-atexit"); @@ -6942,10 +6943,6 @@ void solaris::Linker::ConstructJob(Compi Args.MakeArgString(getToolChain().GetFilePath("values-Xa.o"))); CmdArgs.push_back( Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); - -if (getToolChain().getDriver().CCCIsCXX()) - CmdArgs.push_back( - Args.MakeArgString(getToolChain().GetFilePath("cxa_finalize.o"))); } const ToolChain::path_list &Paths = getToolChain().getFilePaths(); Added: cfe/trunk/test/Driver/solaris-opts.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/solaris-opts.c?rev=247634&view=auto == --- cfe/trunk/test/Driver/solaris-opts.c (added) +++ cfe/trunk/test/Driver/solaris-opts.c Mon Sep 14 18:21:31 2015 @@ -0,0 +1,4 @@ +// RUN: %clang %s --target=sparc-sun-solaris2.11 -### -o %t.o 2>&1 | FileCheck %s + +// CHECK: "-fno-use-cxa-atexit" + ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r248029 - Fix test to pass when the directory name has lld in it.
Author: rafael Date: Fri Sep 18 15:22:36 2015 New Revision: 248029 URL: http://llvm.org/viewvc/llvm-project?rev=248029&view=rev Log: Fix test to pass when the directory name has lld in it. CHECK-LABEL assumes that there is only one occurrence of the match. The output looks like: clang version 3.8.0 (trunk 247999) /path/to/build/dir/bin/clang-3.8 If the path contains lld, the second CHECK-LABEL matches it and we fail since there is no -cc1as between clang and lld. Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248029&r1=248028&r2=248029&view=diff == --- cfe/trunk/test/Driver/amdgpu-toolchain.c (original) +++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 15:22:36 2015 @@ -1,6 +1,5 @@ // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=AS_LINK %s -// AS_LINK-LABEL: clang -// AS_LINK: "-cc1as" -// AS_LINK-LABEL: lld -// AS_LINK: "-flavor" "gnu" "-target" "amdgcn--amdhsa" -// REQUIRES: clang-driver +// AS_LINK: /clang +// AS_LINK-SAME: "-cc1as" +// AS_LINK: /lld +// AS_LINK-SAME: "-flavor" "gnu" "-target" "amdgcn--amdhsa" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r248031 - Relax this test further to pass in other bots.
Author: rafael Date: Fri Sep 18 15:35:53 2015 New Revision: 248031 URL: http://llvm.org/viewvc/llvm-project?rev=248031&view=rev Log: Relax this test further to pass in other bots. The problem this time was the /clang matching the InstalledDir line. Now we just use regular expressions which are more flexible, if a bit less readable, than CHECK+CHECK-SAME. Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248031&r1=248030&r2=248031&view=diff == --- cfe/trunk/test/Driver/amdgpu-toolchain.c (original) +++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 15:35:53 2015 @@ -1,5 +1,3 @@ // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=AS_LINK %s -// AS_LINK: /clang -// AS_LINK-SAME: "-cc1as" -// AS_LINK: /lld -// AS_LINK-SAME: "-flavor" "gnu" "-target" "amdgcn--amdhsa" +// AS_LINK: bin/clang {{.*}} "-cc1as" +// AS_LINK: bin/lld {{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r248033 - Yet another try at fixing this at every bot.
Author: rafael Date: Fri Sep 18 15:44:09 2015 New Revision: 248033 URL: http://llvm.org/viewvc/llvm-project?rev=248033&view=rev Log: Yet another try at fixing this at every bot. This time handle " and - after clang and lld. Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248033&r1=248032&r2=248033&view=diff == --- cfe/trunk/test/Driver/amdgpu-toolchain.c (original) +++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 15:44:09 2015 @@ -1,3 +1,3 @@ // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=AS_LINK %s -// AS_LINK: bin/clang {{.*}} "-cc1as" -// AS_LINK: bin/lld {{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa" +// AS_LINK: bin/clang{{.*}} "-cc1as" +// AS_LINK: bin/lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r248035 - Handle lld not being found in PATH.
Author: rafael Date: Fri Sep 18 15:55:58 2015 New Revision: 248035 URL: http://llvm.org/viewvc/llvm-project?rev=248035&view=rev Log: Handle lld not being found in PATH. Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248035&r1=248034&r2=248035&view=diff == --- cfe/trunk/test/Driver/amdgpu-toolchain.c (original) +++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 15:55:58 2015 @@ -1,3 +1,3 @@ // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=AS_LINK %s // AS_LINK: bin/clang{{.*}} "-cc1as" -// AS_LINK: bin/lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa" +// AS_LINK: lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r248051 - Relax the test to get it passing with windows paths.
Author: rafael Date: Fri Sep 18 17:01:10 2015 New Revision: 248051 URL: http://llvm.org/viewvc/llvm-project?rev=248051&view=rev Log: Relax the test to get it passing with windows paths. Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=248051&r1=248050&r2=248051&view=diff == --- cfe/trunk/test/Driver/amdgpu-toolchain.c (original) +++ cfe/trunk/test/Driver/amdgpu-toolchain.c Fri Sep 18 17:01:10 2015 @@ -1,3 +1,3 @@ // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=AS_LINK %s -// AS_LINK: bin/clang{{.*}} "-cc1as" +// AS_LINK: clang{{.*}} "-cc1as" // AS_LINK: lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r249302 - Use llvm::errc instead of std::errc.
Author: rafael Date: Mon Oct 5 06:49:35 2015 New Revision: 249302 URL: http://llvm.org/viewvc/llvm-project?rev=249302&view=rev Log: Use llvm::errc instead of std::errc. Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=249302&r1=249301&r2=249302&view=diff == --- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Mon Oct 5 06:49:35 2015 @@ -641,7 +641,7 @@ std::unique_ptr if (llvm::sys::fs::exists(Status)) { // Fail early if we can't write to the final destination. if (!llvm::sys::fs::can_write(OutputPath)) { - Error = std::make_error_code(std::errc::operation_not_permitted); + Error = make_error_code(llvm::errc::operation_not_permitted); return nullptr; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r249346 - Fix the MSVC build.
Author: rafael Date: Mon Oct 5 15:20:50 2015 New Revision: 249346 URL: http://llvm.org/viewvc/llvm-project?rev=249346&view=rev Log: Fix the MSVC build. No idea what asymmetry MSVC is findind. Modified: cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp Modified: cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp?rev=249346&r1=249345&r2=249346&view=diff == --- cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp (original) +++ cfe/trunk/unittests/Basic/VirtualFileSystemTest.cpp Mon Oct 5 15:20:50 2015 @@ -528,9 +528,9 @@ protected: TEST_F(InMemoryFileSystemTest, IsEmpty) { auto Stat = FS.status("/a"); - ASSERT_EQ(errc::no_such_file_or_directory, Stat.getError()) << FS.toString(); + ASSERT_EQ(Stat.getError(),errc::no_such_file_or_directory) << FS.toString(); Stat = FS.status("/"); - ASSERT_EQ(errc::no_such_file_or_directory, Stat.getError()) << FS.toString(); + ASSERT_EQ(Stat.getError(), errc::no_such_file_or_directory) << FS.toString(); } TEST_F(InMemoryFileSystemTest, WindowsPath) { @@ -560,9 +560,9 @@ TEST_F(InMemoryFileSystemTest, OpenFileF File = FS.openFileForRead("/a"); // Open again. ASSERT_EQ("a", (*(*File)->getBuffer("ignored"))->getBuffer()); File = FS.openFileForRead("/"); - ASSERT_EQ(errc::invalid_argument, File.getError()) << FS.toString(); + ASSERT_EQ(File.getError(), errc::invalid_argument) << FS.toString(); File = FS.openFileForRead("/b"); - ASSERT_EQ(errc::no_such_file_or_directory, File.getError()) << FS.toString(); + ASSERT_EQ(File.getError(), errc::no_such_file_or_directory) << FS.toString(); } TEST_F(InMemoryFileSystemTest, DirectoryIteration) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r244855 - Update for llvm api change.
Author: rafael Date: Wed Aug 12 20:07:06 2015 New Revision: 244855 URL: http://llvm.org/viewvc/llvm-project?rev=244855&view=rev Log: Update for llvm api change. Modified: cfe/trunk/tools/driver/driver.cpp Modified: cfe/trunk/tools/driver/driver.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/driver.cpp?rev=244855&r1=244854&r2=244855&view=diff == --- cfe/trunk/tools/driver/driver.cpp (original) +++ cfe/trunk/tools/driver/driver.cpp Wed Aug 12 20:07:06 2015 @@ -406,7 +406,7 @@ int main(int argc_, const char **argv_) const DriverSuffix *DS = parseDriverSuffix(ProgName); llvm::BumpPtrAllocator A; - llvm::BumpPtrStringSaver Saver(A); + llvm::StringSaver Saver(A); // Parse response files using the GNU syntax, unless we're in CL mode. There // are two ways to put clang in CL compatibility mode: argv[0] is either ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r246473 - Stop hardcoding GCC paths in crt/ld.so lookup.
Author: rafael Date: Mon Aug 31 14:17:51 2015 New Revision: 246473 URL: http://llvm.org/viewvc/llvm-project?rev=246473&view=rev Log: Stop hardcoding GCC paths in crt/ld.so lookup. This patch refactors the code to use the GCC installation detector (modified so that it works in Solaris), and uses ToolChain::GetFilePath everywhere once it works. Patch by Xan López ! Added: cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crt1.o cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crtbegin.o cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/crtend.o cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/ cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/crti.o cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/crtn.o cfe/trunk/test/Driver/Inputs/sparc-sun-solaris2.11/usr/lib/ld.so.1 cfe/trunk/test/Driver/solaris-ld.c Modified: cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/lib/Driver/ToolChains.h cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=246473&r1=246472&r2=246473&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Aug 31 14:17:51 2015 @@ -1340,9 +1340,21 @@ bool Generic_GCC::GCCInstallationDetecto "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu", "s390x-suse-linux", "s390x-redhat-linux"}; + // Solaris. + static const char *const SolarisSPARCLibDirs[] = {"/gcc"}; + static const char *const SolarisSPARCTriples[] = {"sparc-sun-solaris2.11", +"i386-pc-solaris2.11"}; + using std::begin; using std::end; + if (TargetTriple.getOS() == llvm::Triple::Solaris) { +LibDirs.append(begin(SolarisSPARCLibDirs), end(SolarisSPARCLibDirs)); +TripleAliases.append(begin(SolarisSPARCTriples), end(SolarisSPARCTriples)); + +return; + } + switch (TargetTriple.getArch()) { case llvm::Triple::aarch64: LibDirs.append(begin(AArch64LibDirs), end(AArch64LibDirs)); @@ -1907,6 +1919,54 @@ static bool findBiarchMultilibs(const ll return true; } +void Generic_GCC::GCCInstallationDetector::scanLibDirForGCCTripleSolaris( +const llvm::Triple &TargetArch, const llvm::opt::ArgList &Args, +const std::string &LibDir, StringRef CandidateTriple, +bool NeedsBiarchSuffix) { + // Solaris is a special case. The GCC installation is under + // /usr/gcc/./lib/gcc//../, so we + // need to iterate twice. + std::error_code EC; + for (llvm::sys::fs::directory_iterator LI(LibDir, EC), LE; !EC && LI != LE; + LI = LI.increment(EC)) { +StringRef VersionText = llvm::sys::path::filename(LI->path()); +GCCVersion CandidateVersion = GCCVersion::Parse(VersionText); + +if (CandidateVersion.Major != -1) // Filter obviously bad entries. + if (!CandidateGCCInstallPaths.insert(LI->path()).second) +continue; // Saw this path before; no need to look at it again. +if (CandidateVersion.isOlderThan(4, 1, 1)) + continue; +if (CandidateVersion <= Version) + continue; + +GCCInstallPath = +LibDir + "/" + VersionText.str() + "/lib/gcc/" + CandidateTriple.str(); +if (!llvm::sys::fs::exists(GCCInstallPath)) + continue; + +// If we make it here there has to be at least one GCC version, let's just +// use the latest one. +std::error_code EEC; +for (llvm::sys::fs::directory_iterator LLI(GCCInstallPath, EEC), LLE; + !EEC && LLI != LLE; LLI = LLI.increment(EEC)) { + + StringRef SubVersionText = llvm::sys::path::filename(LLI->path()); + GCCVersion CandidateSubVersion = GCCVersion::Parse(SubVersionText); + + if (CandidateSubVersion > Version) +Version = CandidateSubVersion; +} + +GCCTriple.setTriple(CandidateTriple); + +GCCInstallPath += "/" + Version.Text; +GCCParentLibPath = GCCInstallPath + "/../../../../"; + +IsValid = true; + } +} + void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( const llvm::Triple &TargetTriple, const ArgList &Args, const
r251214 - Simplify boolean conditional return statements in lib/Basic.
Author: rafael Date: Sat Oct 24 18:15:31 2015 New Revision: 251214 URL: http://llvm.org/viewvc/llvm-project?rev=251214&view=rev Log: Simplify boolean conditional return statements in lib/Basic. Patch by Richard. Modified: cfe/trunk/lib/Basic/Targets.cpp Modified: cfe/trunk/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=251214&r1=251213&r2=251214&view=diff == --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Sat Oct 24 18:15:31 2015 @@ -2704,14 +2704,14 @@ bool X86TargetInfo::initFeatureMap( // Enable popcnt if sse4.2 is enabled and popcnt is not explicitly disabled. auto I = Features.find("sse4.2"); - if (I != Features.end() && I->getValue() == true && + if (I != Features.end() && I->getValue() && std::find(FeaturesVec.begin(), FeaturesVec.end(), "-popcnt") == FeaturesVec.end()) Features["popcnt"] = true; // Enable prfchw if 3DNow! is enabled and prfchw is not explicitly disabled. I = Features.find("3dnow"); - if (I != Features.end() && I->getValue() == true && + if (I != Features.end() && I->getValue() && std::find(FeaturesVec.begin(), FeaturesVec.end(), "-prfchw") == FeaturesVec.end()) Features["prfchw"] = true; @@ -2719,7 +2719,7 @@ bool X86TargetInfo::initFeatureMap( // Additionally, if SSE is enabled and mmx is not explicitly disabled, // then enable MMX. I = Features.find("sse"); - if (I != Features.end() && I->getValue() == true && + if (I != Features.end() && I->getValue() && std::find(FeaturesVec.begin(), FeaturesVec.end(), "-mmx") == FeaturesVec.end()) Features["mmx"] = true; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r260522 - Revert "Bail on compilation as soon as a job fails."
Author: rafael Date: Thu Feb 11 08:13:17 2016 New Revision: 260522 URL: http://llvm.org/viewvc/llvm-project?rev=260522&view=rev Log: Revert "Bail on compilation as soon as a job fails." This reverts commit r260448. It was causing Driver/output-file-cleanup.c to fail. Modified: cfe/trunk/lib/Driver/Compilation.cpp Modified: cfe/trunk/lib/Driver/Compilation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Compilation.cpp?rev=260522&r1=260521&r2=260522&view=diff == --- cfe/trunk/lib/Driver/Compilation.cpp (original) +++ cfe/trunk/lib/Driver/Compilation.cpp Thu Feb 11 08:13:17 2016 @@ -163,17 +163,39 @@ int Compilation::ExecuteCommand(const Co return ExecutionFailed ? 1 : Res; } -void Compilation::ExecuteJobs( -const JobList &Jobs, -SmallVectorImpl> &FailingCommands) const { +typedef SmallVectorImpl< std::pair > FailingCommandList; + +static bool ActionFailed(const Action *A, + const FailingCommandList &FailingCommands) { + + if (FailingCommands.empty()) +return false; + + for (FailingCommandList::const_iterator CI = FailingCommands.begin(), + CE = FailingCommands.end(); CI != CE; ++CI) +if (A == &(CI->second->getSource())) + return true; + + for (Action::const_iterator AI = A->begin(), AE = A->end(); AI != AE; ++AI) +if (ActionFailed(*AI, FailingCommands)) + return true; + + return false; +} + +static bool InputsOk(const Command &C, + const FailingCommandList &FailingCommands) { + return !ActionFailed(&C.getSource(), FailingCommands); +} + +void Compilation::ExecuteJobs(const JobList &Jobs, + FailingCommandList &FailingCommands) const { for (const auto &Job : Jobs) { +if (!InputsOk(Job, FailingCommands)) + continue; const Command *FailingCommand = nullptr; -if (int Res = ExecuteCommand(Job, FailingCommand)) { +if (int Res = ExecuteCommand(Job, FailingCommand)) FailingCommands.push_back(std::make_pair(Res, FailingCommand)); - // Bail as soon as one command fails, so we don't output duplicate error - // messages if we die on e.g. the same file. - return; -} } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r268912 - RHEL: Look in more places to find g++ headers and runtime.
Author: rafael Date: Mon May 9 08:03:10 2016 New Revision: 268912 URL: http://llvm.org/viewvc/llvm-project?rev=268912&view=rev Log: RHEL: Look in more places to find g++ headers and runtime. Some distros with ten years of support ship an old gcc but later offer more recent versions for installation in parallel. These versions are typically not only needed for the compilation of llvm/clang, but also to properly use the clang binary that comes out. Clang already searches /usr at runtime for the most recent installation of gcc. This patch appends paths for add-on installations of gcc in RHEL. Patch by Michael Lampe. Modified: cfe/trunk/lib/Driver/ToolChains.cpp Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=268912&r1=268911&r2=268912&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon May 9 08:03:10 2016 @@ -1410,9 +1410,17 @@ void Generic_GCC::GCCInstallationDetecto // Then look for gcc installed alongside clang. Prefixes.push_back(D.InstalledDir + "/.."); -// And finally in /usr. -if (D.SysRoot.empty()) +// Then look for distribution supplied gcc installations. +if (D.SysRoot.empty()) { + // Look for RHEL devtoolsets. + Prefixes.push_back("/opt/rh/devtoolset-4/root/usr"); + Prefixes.push_back("/opt/rh/devtoolset-3/root/usr"); + Prefixes.push_back("/opt/rh/devtoolset-2/root/usr"); + Prefixes.push_back("/opt/rh/devtoolset-1.1/root/usr"); + Prefixes.push_back("/opt/rh/devtoolset-1.0/root/usr"); + // And finally in /usr. Prefixes.push_back("/usr"); +} } // Loop over the various components which exist and select the best GCC ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r268914 - Proper detection and handling of RHEL and variants.
Author: rafael Date: Mon May 9 08:13:50 2016 New Revision: 268914 URL: http://llvm.org/viewvc/llvm-project?rev=268914&view=rev Log: Proper detection and handling of RHEL and variants. - Don't consider "/etc/lsb-release" to be Ubuntu only. - Detect SL, too. - Only add "--no-add-needed" for RHEL7 (or Fedora), not for RHEL6 (that's what the compilers shipped with RHEL do). - removed RHEL4 which is now four years past EOL and certainly incapable of building or running any recent version of llvm/clang. Modified: cfe/trunk/lib/Driver/ToolChains.cpp Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=268914&r1=268913&r2=268914&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Mon May 9 08:13:50 2016 @@ -3421,7 +3421,6 @@ enum Distro { DebianJessie, DebianStretch, Exherbo, - RHEL4, RHEL5, RHEL6, RHEL7, @@ -3448,7 +3447,7 @@ enum Distro { }; static bool IsRedhat(enum Distro Distro) { - return Distro == Fedora || (Distro >= RHEL4 && Distro <= RHEL7); + return Distro == Fedora || (Distro >= RHEL5 && Distro <= RHEL7); } static bool IsOpenSUSE(enum Distro Distro) { return Distro == OpenSUSE; } @@ -3490,7 +3489,8 @@ static Distro DetectDistro(const Driver .Case("wily", UbuntuWily) .Case("xenial", UbuntuXenial) .Default(UnknownDistro); -return Version; +if (Version != UnknownDistro) + return Version; } File = llvm::MemoryBuffer::getFile("/etc/redhat-release"); @@ -3499,15 +3499,14 @@ static Distro DetectDistro(const Driver if (Data.startswith("Fedora release")) return Fedora; if (Data.startswith("Red Hat Enterprise Linux") || -Data.startswith("CentOS")) { +Data.startswith("CentOS") || +Data.startswith("Scientific Linux")) { if (Data.find("release 7") != StringRef::npos) return RHEL7; else if (Data.find("release 6") != StringRef::npos) return RHEL6; else if (Data.find("release 5") != StringRef::npos) return RHEL5; - else if (Data.find("release 4") != StringRef::npos) -return RHEL4; } return UnknownDistro; } @@ -3732,11 +3731,11 @@ Linux::Linux(const Driver &D, const llvm ExtraOpts.push_back("--hash-style=both"); } - if (IsRedhat(Distro)) + if (IsRedhat(Distro) && Distro != RHEL5 && Distro != RHEL6) ExtraOpts.push_back("--no-add-needed"); if ((IsDebian(Distro) && Distro >= DebianSqueeze) || IsOpenSUSE(Distro) || - (IsRedhat(Distro) && Distro != RHEL4 && Distro != RHEL5) || + (IsRedhat(Distro) && Distro != RHEL5) || (IsUbuntu(Distro) && Distro >= UbuntuKarmic)) ExtraOpts.push_back("--build-id"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r269910 - Update for llvm change.
Author: rafael Date: Wed May 18 06:58:56 2016 New Revision: 269910 URL: http://llvm.org/viewvc/llvm-project?rev=269910&view=rev Log: Update for llvm change. Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp cfe/trunk/tools/driver/cc1as_main.cpp Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseStmtAsm.cpp?rev=269910&r1=269909&r2=269910&view=diff == --- cfe/trunk/lib/Parse/ParseStmtAsm.cpp (original) +++ cfe/trunk/lib/Parse/ParseStmtAsm.cpp Wed May 18 06:58:56 2016 @@ -572,8 +572,8 @@ StmtResult Parser::ParseMicrosoftAsmStat llvm::SourceMgr TempSrcMgr; llvm::MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), &TempSrcMgr); - MOFI->InitMCObjectFileInfo(TheTriple, llvm::Reloc::Default, - llvm::CodeModel::Default, Ctx); + MOFI->InitMCObjectFileInfo(TheTriple, /*PIG*/ false, llvm::CodeModel::Default, + Ctx); std::unique_ptr Buffer = llvm::MemoryBuffer::getMemBuffer(AsmString, ""); Modified: cfe/trunk/tools/driver/cc1as_main.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=269910&r1=269909&r2=269910&view=diff == --- cfe/trunk/tools/driver/cc1as_main.cpp (original) +++ cfe/trunk/tools/driver/cc1as_main.cpp Wed May 18 06:58:56 2016 @@ -326,19 +326,18 @@ static bool ExecuteAssembler(AssemblerIn MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), &SrcMgr); - llvm::Reloc::Model RM = llvm::Reloc::Default; + bool PIC = false; if (Opts.RelocationModel == "static") { -RM = llvm::Reloc::Static; +PIC = false; } else if (Opts.RelocationModel == "pic") { -RM = llvm::Reloc::PIC_; +PIC = true; } else { assert(Opts.RelocationModel == "dynamic-no-pic" && "Invalid PIC model!"); -RM = llvm::Reloc::DynamicNoPIC; +PIC = false; } - MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), RM, - CodeModel::Default, Ctx); + MOFI->InitMCObjectFileInfo(Triple(Opts.Triple), PIC, CodeModel::Default, Ctx); if (Opts.SaveTemporaryLabels) Ctx.setAllowTemporaryLabels(false); if (Opts.GenDwarfForAssembly) ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r269989 - Update for llvm change.
Author: rafael Date: Wed May 18 17:04:57 2016 New Revision: 269989 URL: http://llvm.org/viewvc/llvm-project?rev=269989&view=rev Log: Update for llvm change. Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=269989&r1=269988&r2=269989&view=diff == --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Wed May 18 17:04:57 2016 @@ -528,7 +528,7 @@ TargetMachine *EmitAssemblyHelper::Creat llvm::join(TargetOpts.Features.begin(), TargetOpts.Features.end(), ","); // Keep this synced with the equivalent code in tools/driver/cc1as_main.cpp. - llvm::Reloc::Model RM = llvm::Reloc::Default; + llvm::Optional RM; if (CodeGenOpts.RelocationModel == "static") { RM = llvm::Reloc::Static; } else if (CodeGenOpts.RelocationModel == "pic") { Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=269989&r1=269988&r2=269989&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Wed May 18 17:04:57 2016 @@ -3609,8 +3609,6 @@ ParsePICArgs(const ToolChain &ToolChain, static const char *RelocationModelName(llvm::Reloc::Model Model) { switch (Model) { - case llvm::Reloc::Default: -return nullptr; case llvm::Reloc::Static: return "static"; case llvm::Reloc::PIC_: ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r270006 - Fix a funny Dvorak typo.
Author: rafael Date: Wed May 18 19:16:09 2016 New Revision: 270006 URL: http://llvm.org/viewvc/llvm-project?rev=270006&view=rev Log: Fix a funny Dvorak typo. Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp Modified: cfe/trunk/lib/Parse/ParseStmtAsm.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseStmtAsm.cpp?rev=270006&r1=270005&r2=270006&view=diff == --- cfe/trunk/lib/Parse/ParseStmtAsm.cpp (original) +++ cfe/trunk/lib/Parse/ParseStmtAsm.cpp Wed May 18 19:16:09 2016 @@ -572,7 +572,7 @@ StmtResult Parser::ParseMicrosoftAsmStat llvm::SourceMgr TempSrcMgr; llvm::MCContext Ctx(MAI.get(), MRI.get(), MOFI.get(), &TempSrcMgr); - MOFI->InitMCObjectFileInfo(TheTriple, /*PIG*/ false, llvm::CodeModel::Default, + MOFI->InitMCObjectFileInfo(TheTriple, /*PIC*/ false, llvm::CodeModel::Default, Ctx); std::unique_ptr Buffer = llvm::MemoryBuffer::getMemBuffer(AsmString, ""); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r271162 - Handle -Wa,--mrelax-relocations=[no|yes].
Author: rafael Date: Sat May 28 21:01:14 2016 New Revision: 271162 URL: http://llvm.org/viewvc/llvm-project?rev=271162&view=rev Log: Handle -Wa,--mrelax-relocations=[no|yes]. Added: cfe/trunk/test/CodeGen/relax.c cfe/trunk/test/Driver/relax.c cfe/trunk/test/Driver/relax.s Modified: cfe/trunk/include/clang/Driver/CC1Options.td cfe/trunk/include/clang/Frontend/CodeGenOptions.def cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/tools/driver/cc1as_main.cpp Modified: cfe/trunk/include/clang/Driver/CC1Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=271162&r1=271161&r2=271162&view=diff == --- cfe/trunk/include/clang/Driver/CC1Options.td (original) +++ cfe/trunk/include/clang/Driver/CC1Options.td Sat May 28 21:01:14 2016 @@ -143,6 +143,8 @@ def mno_exec_stack : Flag<["-"], "mnoexe HelpText<"Mark the file as not needing an executable stack">; def massembler_fatal_warnings : Flag<["-"], "massembler-fatal-warnings">, HelpText<"Make assembler warnings fatal">; +def mrelax_relocations : Flag<["--"], "mrelax-relocations">, +HelpText<"Use relaxabel elf relocations">; def compress_debug_sections : Flag<["-"], "compress-debug-sections">, HelpText<"Compress DWARF debug sections using zlib">; def msave_temp_labels : Flag<["-"], "msave-temp-labels">, Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=271162&r1=271161&r2=271162&view=diff == --- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original) +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Sat May 28 21:01:14 2016 @@ -30,6 +30,7 @@ CODEGENOPT(Name, Bits, Default) CODEGENOPT(DisableIntegratedAS, 1, 0) ///< -no-integrated-as CODEGENOPT(CompressDebugSections, 1, 0) ///< -Wa,-compress-debug-sections +CODEGENOPT(RelaxELFRelocations, 1, 0) ///< -Wa,--mrelax-relocations CODEGENOPT(AsmVerbose, 1, 0) ///< -dA, -fverbose-asm. CODEGENOPT(AssumeSaneOperatorNew , 1, 1) ///< implicit __attribute__((malloc)) operator new CODEGENOPT(Autolink , 1, 1) ///< -fno-autolink Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=271162&r1=271161&r2=271162&view=diff == --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Sat May 28 21:01:14 2016 @@ -593,6 +593,7 @@ TargetMachine *EmitAssemblyHelper::Creat Options.UseInitArray = CodeGenOpts.UseInitArray; Options.DisableIntegratedAS = CodeGenOpts.DisableIntegratedAS; Options.CompressDebugSections = CodeGenOpts.CompressDebugSections; + Options.RelaxELFRelocations = CodeGenOpts.RelaxELFRelocations; // Set EABI version. Options.EABIVersion = llvm::StringSwitch(TargetOpts.EABIVersion) Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=271162&r1=271161&r2=271162&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Sat May 28 21:01:14 2016 @@ -2797,6 +2797,8 @@ static void CollectArgsForIntegratedAsse // When using an integrated assembler, translate -Wa, and -Xassembler // options. bool CompressDebugSections = false; + + bool UseRelaxRelocations = false; const char *MipsTargetFeature = nullptr; for (const Arg *A : Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) { @@ -2872,6 +2874,12 @@ static void CollectArgsForIntegratedAsse } else if (Value == "-nocompress-debug-sections" || Value == "--nocompress-debug-sections") { CompressDebugSections = false; + } else if (Value == "-mrelax-relocations=yes" || + Value == "--mrelax-relocations=yes") { +UseRelaxRelocations = true; + } else if (Value == "-mrelax-relocations=no" || + Value == "--mrelax-relocations=no") { +UseRelaxRelocations = false; } else if (Value.startswith("-I")) { CmdArgs.push_back(Value.data()); // We need to consume the next argument if the current arg is a plain @@ -2903,6 +2911,8 @@ static void CollectArgsForIntegratedAsse else D.Diag(diag::warn_debug_compression_unavailable); } + if (UseRelaxRelocations) +CmdArgs.push_back("--mrelax-relocations"); if (MipsTargetFeature != nullptr) { CmdArgs.push_back("-target-feature"); CmdArgs.push_back(MipsTargetFeature); Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.or
r271163 - Mark test as requiring x86-registered-target.
Author: rafael Date: Sat May 28 21:36:16 2016 New Revision: 271163 URL: http://llvm.org/viewvc/llvm-project?rev=271163&view=rev Log: Mark test as requiring x86-registered-target. Modified: cfe/trunk/test/CodeGen/relax.c Modified: cfe/trunk/test/CodeGen/relax.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/relax.c?rev=271163&r1=271162&r2=271163&view=diff == --- cfe/trunk/test/CodeGen/relax.c (original) +++ cfe/trunk/test/CodeGen/relax.c Sat May 28 21:36:16 2016 @@ -1,3 +1,4 @@ +// REQUIRES: x86-registered-target // RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-obj --mrelax-relocations %s -mrelocation-model pic -o %t // RUN: llvm-readobj -r %t | FileCheck %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r271166 - Fix typo.
Author: rafael Date: Sat May 28 22:03:22 2016 New Revision: 271166 URL: http://llvm.org/viewvc/llvm-project?rev=271166&view=rev Log: Fix typo. Thanks to David Majnemer for noticing. Modified: cfe/trunk/include/clang/Driver/CC1Options.td Modified: cfe/trunk/include/clang/Driver/CC1Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=271166&r1=271165&r2=271166&view=diff == --- cfe/trunk/include/clang/Driver/CC1Options.td (original) +++ cfe/trunk/include/clang/Driver/CC1Options.td Sat May 28 22:03:22 2016 @@ -144,7 +144,7 @@ def mno_exec_stack : Flag<["-"], "mnoexe def massembler_fatal_warnings : Flag<["-"], "massembler-fatal-warnings">, HelpText<"Make assembler warnings fatal">; def mrelax_relocations : Flag<["--"], "mrelax-relocations">, -HelpText<"Use relaxabel elf relocations">; +HelpText<"Use relaxable elf relocations">; def compress_debug_sections : Flag<["-"], "compress-debug-sections">, HelpText<"Compress DWARF debug sections using zlib">; def msave_temp_labels : Flag<["-"], "msave-temp-labels">, ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r271609 - Delete configure left over.
Author: rafael Date: Thu Jun 2 18:45:37 2016 New Revision: 271609 URL: http://llvm.org/viewvc/llvm-project?rev=271609&view=rev Log: Delete configure left over. Removed: cfe/trunk/include/clang/Config/config.h.in Removed: cfe/trunk/include/clang/Config/config.h.in URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.in?rev=271608&view=auto == --- cfe/trunk/include/clang/Config/config.h.in (original) +++ cfe/trunk/include/clang/Config/config.h.in (removed) @@ -1,43 +0,0 @@ -/* This generated file is for internal use. Do not include it from headers. */ - -#ifdef CLANG_CONFIG_H -#error config.h can only be included once -#else -#define CLANG_CONFIG_H - -/* Bug report URL. */ -#undef BUG_REPORT_URL - -/* Default C++ stdlib to use. */ -#undef CLANG_DEFAULT_CXX_STDLIB - -/* Default OpenMP runtime used by -fopenmp. */ -#undef CLANG_DEFAULT_OPENMP_RUNTIME - -/* Multilib suffix for libdir. */ -#undef CLANG_LIBDIR_SUFFIX - -/* Relative directory for resource files */ -#undef CLANG_RESOURCE_DIR - -/* Directories clang will search for headers */ -#undef C_INCLUDE_DIRS - -/* Default to all compiler invocations for --sysroot=. */ -#undef DEFAULT_SYSROOT - -/* Directory where gcc is installed. */ -#undef GCC_INSTALL_PREFIX - -/* Define if we have libxml2 */ -#undef CLANG_HAVE_LIBXML - -#undef PACKAGE_STRING - -/* The LLVM product name and version */ -#define BACKEND_PACKAGE_STRING PACKAGE_STRING - -/* Linker version detected at compile time. */ -#undef HOST_LINK_VERSION - -#endif ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r271692 - Don't pass --build-id to ld by default.
Author: rafael Date: Fri Jun 3 12:26:16 2016 New Revision: 271692 URL: http://llvm.org/viewvc/llvm-project?rev=271692&view=rev Log: Don't pass --build-id to ld by default. We now have a cmake option to change the default: ENABLE_LINKER_BUILD_ID. The reason is that build-id is fairly expensive, so we shouldn't impose it in the regular edit/build cycle. This is similar to gcc, that has an off by default --enable-linker-build-id option. Modified: cfe/trunk/CMakeLists.txt cfe/trunk/include/clang/Config/config.h.cmake cfe/trunk/lib/Driver/ToolChains.cpp Modified: cfe/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=271692&r1=271691&r2=271692&view=diff == --- cfe/trunk/CMakeLists.txt (original) +++ cfe/trunk/CMakeLists.txt Fri Jun 3 12:26:16 2016 @@ -197,6 +197,8 @@ set(GCC_INSTALL_PREFIX "" CACHE PATH "Di set(DEFAULT_SYSROOT "" CACHE PATH "Default to all compiler invocations for --sysroot=." ) +set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld") + set(CLANG_DEFAULT_CXX_STDLIB "" CACHE STRING "Default C++ stdlib to use (empty for architecture default, \"libstdc++\" or \"libc++\"") if (NOT(CLANG_DEFAULT_CXX_STDLIB STREQUAL "" OR Modified: cfe/trunk/include/clang/Config/config.h.cmake URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.cmake?rev=271692&r1=271691&r2=271692&view=diff == --- cfe/trunk/include/clang/Config/config.h.cmake (original) +++ cfe/trunk/include/clang/Config/config.h.cmake Fri Jun 3 12:26:16 2016 @@ -38,4 +38,7 @@ /* Linker version detected at compile time. */ #cmakedefine HOST_LINK_VERSION "${HOST_LINK_VERSION}" +/* pass --build-id to ld */ +#cmakedefine ENABLE_LINKER_BUILD_ID + #endif Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=271692&r1=271691&r2=271692&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Jun 3 12:26:16 2016 @@ -3978,10 +3978,9 @@ Linux::Linux(const Driver &D, const llvm if (IsRedhat(Distro) && Distro != RHEL5 && Distro != RHEL6) ExtraOpts.push_back("--no-add-needed"); - if ((IsDebian(Distro) && Distro >= DebianSqueeze) || IsOpenSUSE(Distro) || - (IsRedhat(Distro) && Distro != RHEL5) || - (IsUbuntu(Distro) && Distro >= UbuntuKarmic)) -ExtraOpts.push_back("--build-id"); +#ifdef ENABLE_LINKER_BUILD_ID + ExtraOpts.push_back("--build-id"); +#endif if (IsOpenSUSE(Distro)) ExtraOpts.push_back("--enable-new-dtags"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r271918 - Add a release note about the --build-id change.
Author: rafael Date: Mon Jun 6 13:23:11 2016 New Revision: 271918 URL: http://llvm.org/viewvc/llvm-project?rev=271918&view=rev Log: Add a release note about the --build-id change. Modified: cfe/trunk/docs/ReleaseNotes.rst Modified: cfe/trunk/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=271918&r1=271917&r2=271918&view=diff == --- cfe/trunk/docs/ReleaseNotes.rst (original) +++ cfe/trunk/docs/ReleaseNotes.rst Mon Jun 6 13:23:11 2016 @@ -47,7 +47,10 @@ sections with improvements to Clang's su Major New Features -- -- Feature1... +- Clang will no longer passes --build-id by default to the linker. In modern + linkers that is a relatively expensive option. It can be passed explicitly + with -Wl,--build-id. To have clang always pass it, build it with + -DENABLE_LINKER_BUILD_ID. Improvements to Clang's diagnostics ^^^ ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r272260 - Replace an ambiguous "it"
Author: rafael Date: Thu Jun 9 08:35:55 2016 New Revision: 272260 URL: http://llvm.org/viewvc/llvm-project?rev=272260&view=rev Log: Replace an ambiguous "it" Thanks to Sean for the suggestion. Modified: cfe/trunk/docs/ReleaseNotes.rst Modified: cfe/trunk/docs/ReleaseNotes.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/ReleaseNotes.rst?rev=272260&r1=272259&r2=272260&view=diff == --- cfe/trunk/docs/ReleaseNotes.rst (original) +++ cfe/trunk/docs/ReleaseNotes.rst Thu Jun 9 08:35:55 2016 @@ -49,7 +49,7 @@ Major New Features - Clang will no longer passes --build-id by default to the linker. In modern linkers that is a relatively expensive option. It can be passed explicitly - with -Wl,--build-id. To have clang always pass it, build it with + with -Wl,--build-id. To have clang always pass it, build clang with -DENABLE_LINKER_BUILD_ID. Improvements to Clang's diagnostics ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r272662 - Start adding support for Musl.
Author: rafael Date: Tue Jun 14 07:47:24 2016 New Revision: 272662 URL: http://llvm.org/viewvc/llvm-project?rev=272662&view=rev Log: Start adding support for Musl. The two patches together enable clang to support targets like "x86_64-pc-linux-musl" and build binaries against musl-libc instead of glibc. This make it easy for clang to work on some musl-based systems like Alpine Linux and certain flavors of Gentoo. Patch by Lei Zhang. Modified: cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/test/Driver/linux-ld.c Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=272662&r1=272661&r2=272662&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Tue Jun 14 07:47:24 2016 @@ -4152,6 +4152,8 @@ std::string Linux::getDynamicLinker(cons if (Triple.isAndroid()) return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker"; + else if (Triple.getEnvironment() == llvm::Triple::Musl) +return "/lib/ld-musl-" + Triple.getArchName().str() + ".so.1"; std::string LibDir; std::string Loader; Modified: cfe/trunk/test/Driver/linux-ld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=272662&r1=272661&r2=272662&view=diff == --- cfe/trunk/test/Driver/linux-ld.c (original) +++ cfe/trunk/test/Driver/linux-ld.c Tue Jun 14 07:47:24 2016 @@ -1571,3 +1571,13 @@ // CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" // CHECK-ARMV7EB: "--be8" // CHECK-ARMV7EB: "-m" "armelfb_linux_eabi" + +// Check dynamic-linker for musl-libc +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=i386-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL32 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=x86_64-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL64 %s +// CHECK-MUSL32: "-dynamic-linker" "/lib/ld-musl-i386.so.1" +// CHECK-MUSL64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r272825 - Add a few Musl related tests that already pass.
Author: rafael Date: Wed Jun 15 15:02:22 2016 New Revision: 272825 URL: http://llvm.org/viewvc/llvm-project?rev=272825&view=rev Log: Add a few Musl related tests that already pass. Patch by Lei Zhang. Modified: cfe/trunk/test/Driver/linux-ld.c Modified: cfe/trunk/test/Driver/linux-ld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=272825&r1=272824&r2=272825&view=diff == --- cfe/trunk/test/Driver/linux-ld.c (original) +++ cfe/trunk/test/Driver/linux-ld.c Wed Jun 15 15:02:22 2016 @@ -1575,9 +1575,33 @@ // Check dynamic-linker for musl-libc // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=i386-pc-linux-musl \ -// RUN: | FileCheck --check-prefix=CHECK-MUSL32 %s +// RUN: | FileCheck --check-prefix=CHECK-MUSL-X86 %s // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=x86_64-pc-linux-musl \ -// RUN: | FileCheck --check-prefix=CHECK-MUSL64 %s -// CHECK-MUSL32: "-dynamic-linker" "/lib/ld-musl-i386.so.1" -// CHECK-MUSL64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1" +// RUN: | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mips-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mipsel-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mips64-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=mips64el-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=powerpc-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-PPC %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=powerpc64-pc-linux-musl \ +// RUN: | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s +// CHECK-MUSL-X86: "-dynamic-linker" "/lib/ld-musl-i386.so.1" +// CHECK-MUSL-X86_64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1" +// CHECK-MUSL-MIPS: "-dynamic-linker" "/lib/ld-musl-mips.so.1" +// CHECK-MUSL-MIPSEL: "-dynamic-linker" "/lib/ld-musl-mipsel.so.1" +// CHECK-MUSL-MIPS64: "-dynamic-linker" "/lib/ld-musl-mips64.so.1" +// CHECK-MUSL-MIPS64EL: "-dynamic-linker" "/lib/ld-musl-mips64el.so.1" +// CHECK-MUSL-PPC: "-dynamic-linker" "/lib/ld-musl-powerpc.so.1" +// CHECK-MUSL-PPC64:"-dynamic-linker" "/lib/ld-musl-powerpc64.so.1" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r273224 - Add a ENABLE_X86_RELAX_RELOCATIONS cmake option.
Author: rafael Date: Mon Jun 20 18:54:44 2016 New Revision: 273224 URL: http://llvm.org/viewvc/llvm-project?rev=273224&view=rev Log: Add a ENABLE_X86_RELAX_RELOCATIONS cmake option. This corresponds to binutils' --enable-x86-relax-relocations. Modified: cfe/trunk/CMakeLists.txt cfe/trunk/include/clang/Config/config.h.cmake cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CMakeLists.txt?rev=273224&r1=273223&r2=273224&view=diff == --- cfe/trunk/CMakeLists.txt (original) +++ cfe/trunk/CMakeLists.txt Mon Jun 20 18:54:44 2016 @@ -185,6 +185,9 @@ set(DEFAULT_SYSROOT "" CACHE PATH set(ENABLE_LINKER_BUILD_ID OFF CACHE BOOL "pass --build-id to ld") +set(ENABLE_X86_RELAX_RELOCATIONS OFF CACHE BOOL +"enable x86 relax relocations by default") + set(CLANG_DEFAULT_CXX_STDLIB "" CACHE STRING "Default C++ stdlib to use (empty for architecture default, \"libstdc++\" or \"libc++\"") if (NOT(CLANG_DEFAULT_CXX_STDLIB STREQUAL "" OR Modified: cfe/trunk/include/clang/Config/config.h.cmake URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Config/config.h.cmake?rev=273224&r1=273223&r2=273224&view=diff == --- cfe/trunk/include/clang/Config/config.h.cmake (original) +++ cfe/trunk/include/clang/Config/config.h.cmake Mon Jun 20 18:54:44 2016 @@ -41,4 +41,7 @@ /* pass --build-id to ld */ #cmakedefine ENABLE_LINKER_BUILD_ID +/* enable x86 relax relocations by default */ +#cmakedefine01 ENABLE_X86_RELAX_RELOCATIONS + #endif Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=273224&r1=273223&r2=273224&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Jun 20 18:54:44 2016 @@ -2839,7 +2839,7 @@ static void CollectArgsForIntegratedAsse // options. bool CompressDebugSections = false; - bool UseRelaxRelocations = false; + bool UseRelaxRelocations = ENABLE_X86_RELAX_RELOCATIONS; const char *MipsTargetFeature = nullptr; for (const Arg *A : Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) { ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r273300 - Delete dead code.
Author: rafael Date: Tue Jun 21 14:19:31 2016 New Revision: 273300 URL: http://llvm.org/viewvc/llvm-project?rev=273300&view=rev Log: Delete dead code. Found by gcc 6. Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=273300&r1=273299&r2=273300&view=diff == --- cfe/trunk/lib/AST/ItaniumMangle.cpp (original) +++ cfe/trunk/lib/AST/ItaniumMangle.cpp Tue Jun 21 14:19:31 2016 @@ -316,7 +316,6 @@ private: bool mangleSubstitution(TemplateName Template); bool mangleSubstitution(uintptr_t Ptr); - void mangleExistingSubstitution(QualType type); void mangleExistingSubstitution(TemplateName name); bool mangleStandardSubstitution(const NamedDecl *ND); @@ -3875,12 +3874,6 @@ void CXXNameMangler::mangleSeqID(unsigne Out << '_'; } -void CXXNameMangler::mangleExistingSubstitution(QualType type) { - bool result = mangleSubstitution(type); - assert(result && "no existing substitution for type"); - (void) result; -} - void CXXNameMangler::mangleExistingSubstitution(TemplateName tname) { bool result = mangleSubstitution(tname); assert(result && "no existing substitution for template name"); Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=273300&r1=273299&r2=273300&view=diff == --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Tue Jun 21 14:19:31 2016 @@ -2374,59 +2374,6 @@ bool CompilerInvocation::CreateFromArgs( return Success; } -namespace { - - class ModuleSignature { -SmallVector Data; -unsigned CurBit; -uint64_t CurValue; - - public: -ModuleSignature() : CurBit(0), CurValue(0) { } - -void add(uint64_t Value, unsigned Bits); -void add(StringRef Value); -void flush(); - -llvm::APInt getAsInteger() const; - }; -} - -void ModuleSignature::add(uint64_t Value, unsigned int NumBits) { - CurValue |= Value << CurBit; - if (CurBit + NumBits < 64) { -CurBit += NumBits; -return; - } - - // Add the current word. - Data.push_back(CurValue); - - if (CurBit) -CurValue = Value >> (64-CurBit); - else -CurValue = 0; - CurBit = (CurBit+NumBits) & 63; -} - -void ModuleSignature::flush() { - if (CurBit == 0) -return; - - Data.push_back(CurValue); - CurBit = 0; - CurValue = 0; -} - -void ModuleSignature::add(StringRef Value) { - for (auto &c : Value) -add(c, 8); -} - -llvm::APInt ModuleSignature::getAsInteger() const { - return llvm::APInt(Data.size() * 64, Data); -} - std::string CompilerInvocation::getModuleHash() const { // Note: For QoI reasons, the things we use as a hash here should all be // dumped via the -module-info flag. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r273327 - Delete dead code.
Author: rafael Date: Tue Jun 21 17:24:45 2016 New Revision: 273327 URL: http://llvm.org/viewvc/llvm-project?rev=273327&view=rev Log: Delete dead code. Found by gcc 6. Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp?rev=273327&r1=273326&r2=273327&view=diff == --- cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp (original) +++ cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp Tue Jun 21 17:24:45 2016 @@ -366,7 +366,6 @@ namespace { Stmt *RewriteContinueStmt(ContinueStmt *S); void RewriteCastExpr(CStyleCastExpr *CE); void RewriteImplicitCastObjCExpr(CastExpr *IE); -void RewriteLinkageSpec(LinkageSpecDecl *LSD); // Computes ivar bitfield group no. unsigned ObjCIvarBitfieldGroupNo(ObjCIvarDecl *IV); @@ -447,9 +446,6 @@ namespace { std::string &Result); void RewriteObjCProtocolMetaData(ObjCProtocolDecl *Protocol, std::string &Result); -void RewriteObjCProtocolListMetaData( - const ObjCList &Prots, - StringRef prefix, StringRef ClassName, std::string &Result); void RewriteObjCClassMetaData(ObjCImplementationDecl *IDecl, std::string &Result); void RewriteClassSetupInitHook(std::string &Result); @@ -522,7 +518,6 @@ namespace { QualType getSuperStructType(); QualType getConstantStringStructType(); QualType convertFunctionTypeOfBlocks(const FunctionType *FT); -bool BufferContainsPPDirectives(const char *startBuf, const char *endBuf); void convertToUnqualifiedObjCType(QualType &T) { if (T->isObjCQualifiedIdType()) { @@ -742,10 +737,6 @@ void RewriteModernObjC::HandleTopLevelSi if (PD->isThisDeclarationADefinition()) RewriteProtocolDecl(PD); } else if (LinkageSpecDecl *LSD = dyn_cast(D)) { -// FIXME. This will not work in all situations and leaving it out -// is harmless. -// RewriteLinkageSpec(LSD); - // Recurse into linkage specifications for (DeclContext::decl_iterator DI = LSD->decls_begin(), DIEnd = LSD->decls_end(); @@ -1210,22 +1201,6 @@ RewriteModernObjC::RewriteForwardProtoco ReplaceText(LocStart, 0, "// "); } -void -RewriteModernObjC::RewriteLinkageSpec(LinkageSpecDecl *LSD) { - SourceLocation LocStart = LSD->getExternLoc(); - if (LocStart.isInvalid()) -llvm_unreachable("Invalid extern SourceLocation"); - - ReplaceText(LocStart, 0, "// "); - if (!LSD->hasBraces()) -return; - // FIXME. We don't rewrite well if '{' is not on same line as 'extern'. - SourceLocation LocRBrace = LSD->getRBraceLoc(); - if (LocRBrace.isInvalid()) -llvm_unreachable("Invalid rbrace SourceLocation"); - ReplaceText(LocRBrace, 0, "// "); -} - void RewriteModernObjC::RewriteTypeIntoString(QualType T, std::string &ResultStr, const FunctionType *&FPRetType) { if (T->isObjCQualifiedIdType()) @@ -3629,32 +3604,6 @@ Stmt *RewriteModernObjC::RewriteObjCProt return castExpr; } -bool RewriteModernObjC::BufferContainsPPDirectives(const char *startBuf, - const char *endBuf) { - while (startBuf < endBuf) { -if (*startBuf == '#') { - // Skip whitespace. - for (++startBuf; startBuf[0] == ' ' || startBuf[0] == '\t'; ++startBuf) -; - if (!strncmp(startBuf, "if", strlen("if")) || - !strncmp(startBuf, "ifdef", strlen("ifdef")) || - !strncmp(startBuf, "ifndef", strlen("ifndef")) || - !strncmp(startBuf, "define", strlen("define")) || - !strncmp(startBuf, "undef", strlen("undef")) || - !strncmp(startBuf, "else", strlen("else")) || - !strncmp(startBuf, "elif", strlen("elif")) || - !strncmp(startBuf, "endif", strlen("endif")) || - !strncmp(startBuf, "pragma", strlen("pragma")) || - !strncmp(startBuf, "include", strlen("include")) || - !strncmp(startBuf, "import", strlen("import")) || - !strncmp(startBuf, "include_next", strlen("include_next"))) -return true; -} -startBuf++; - } - return false; -} - /// IsTagDefinedInsideClass - This routine checks that a named tagged type /// is defined inside an objective-c class. If so, it returns true. bool RewriteModernObjC::IsTagDefinedInsideClass(ObjCContainerDecl *IDecl, @@ -7048,51 +6997,6 @@ void RewriteModernObjC::RewriteObjCProto llvm_unreachable("protocol already synthesized"); } -void RewriteModernObjC::RewriteObjCProtocolListMetaData( -const ObjCList &Protocols, -StringRef prefix, StringRef ClassNa
r273450 - Make this test a bit more strict and fix it.
Author: rafael Date: Wed Jun 22 13:04:52 2016 New Revision: 273450 URL: http://llvm.org/viewvc/llvm-project?rev=273450&view=rev Log: Make this test a bit more strict and fix it. We do pass -pic-level to cc1 when targeting darwin. Given that codegen itself doesn't use it, the only difference is whether __PIE__ and __pie__ are defined. Modified: cfe/trunk/test/Driver/pic.c Modified: cfe/trunk/test/Driver/pic.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/pic.c?rev=273450&r1=273449&r2=273450&view=diff == --- cfe/trunk/test/Driver/pic.c (original) +++ cfe/trunk/test/Driver/pic.c Wed Jun 22 13:04:52 2016 @@ -7,9 +7,11 @@ // // CHECK-PIC1: "-mrelocation-model" "pic" // CHECK-PIC1: "-pic-level" "1" +// CHECK-PIC1-NOT: "-pie-level" // // CHECK-PIC2: "-mrelocation-model" "pic" // CHECK-PIC2: "-pic-level" "2" +// CHECK-PIC2-NOT: "-pie-level" // // CHECK-STATIC: "-static" // CHECK-NO-STATIC-NOT: "-static" @@ -151,10 +153,9 @@ // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIE // // Darwin is a beautiful and unique snowflake when it comes to these flags. -// When targeting a 32-bit darwin system, the -fno-* flag variants work and -// disable PIC, but any other flag enables PIC (*not* PIE) even if the flag -// specifies PIE. On 64-bit targets, there is simply nothing you can do, there -// is no PIE, there is only PIC when it comes to compilation. +// When targeting a 32-bit darwin system, only level 2 is supported. On 64-bit +// targets, there is simply nothing you can do, there is no PIE, there is only +// PIC when it comes to compilation. // RUN: %clang -c %s -target i386-apple-darwin -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 // RUN: %clang -c %s -target i386-apple-darwin -fpic -### 2>&1 \ @@ -162,9 +163,9 @@ // RUN: %clang -c %s -target i386-apple-darwin -fPIC -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 // RUN: %clang -c %s -target i386-apple-darwin -fpie -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 +// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 // RUN: %clang -c %s -target i386-apple-darwin -fPIE -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 +// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC // RUN: %clang -c %s -target i386-apple-darwin -fno-PIE -### 2>&1 \ @@ -172,7 +173,7 @@ // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fpic -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fPIE -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 +// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 // RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIC -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 // RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIE -### 2>&1 \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r273566 - Restructure the propagation of -fPIC/-fPIE.
Author: rafael Date: Thu Jun 23 10:07:32 2016 New Revision: 273566 URL: http://llvm.org/viewvc/llvm-project?rev=273566&view=rev Log: Restructure the propagation of -fPIC/-fPIE. The PIC and PIE levels are not independent. In fact, if PIE is defined it is always the same as PIC. This is clear in the driver where ParsePICArgs returns a PIC level and a IsPIE boolean. Unfortunately that is currently lost and we pass two redundant levels down the pipeline. This patch keeps a bool and a PIC level all the way down to codegen. Modified: cfe/trunk/include/clang/Basic/LangOptions.def cfe/trunk/include/clang/Driver/CC1Options.td cfe/trunk/lib/CodeGen/CGObjCGNU.cpp cfe/trunk/lib/CodeGen/CodeGenModule.cpp cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/lib/Frontend/InitPreprocessor.cpp cfe/trunk/test/Driver/fsanitize.c cfe/trunk/test/Driver/pic.c cfe/trunk/test/Driver/ps4-pic.c cfe/trunk/test/Modules/explicit-build-flags.cpp cfe/trunk/test/Preprocessor/pic.c Modified: cfe/trunk/include/clang/Basic/LangOptions.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.def?rev=273566&r1=273565&r2=273566&view=diff == --- cfe/trunk/include/clang/Basic/LangOptions.def (original) +++ cfe/trunk/include/clang/Basic/LangOptions.def Thu Jun 23 10:07:32 2016 @@ -158,7 +158,7 @@ VALUE_LANGOPT(MaxTypeAlign , 32, 0, "default maximum alignment for types") VALUE_LANGOPT(AlignDouble, 1, 0, "Controls if doubles should be aligned to 8 bytes (x86 only)") COMPATIBLE_VALUE_LANGOPT(PICLevel, 2, 0, "__PIC__ level") -COMPATIBLE_VALUE_LANGOPT(PIELevel, 2, 0, "__PIE__ level") +COMPATIBLE_VALUE_LANGOPT(PIE , 1, 0, "is pie") COMPATIBLE_LANGOPT(GNUInline , 1, 0, "GNU inline semantics") COMPATIBLE_LANGOPT(NoInlineDefine, 1, 0, "__NO_INLINE__ predefined macro") COMPATIBLE_LANGOPT(Deprecated, 1, 0, "__DEPRECATED predefined macro") Modified: cfe/trunk/include/clang/Driver/CC1Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=273566&r1=273565&r2=273566&view=diff == --- cfe/trunk/include/clang/Driver/CC1Options.td (original) +++ cfe/trunk/include/clang/Driver/CC1Options.td Thu Jun 23 10:07:32 2016 @@ -546,8 +546,8 @@ def fencode_extended_block_signature : F HelpText<"enable extended encoding of block type signature">; def pic_level : Separate<["-"], "pic-level">, HelpText<"Value for __PIC__">; -def pie_level : Separate<["-"], "pie-level">, - HelpText<"Value for __PIE__">; +def pic_is_pie : Flag<["-"], "pic-is-pie">, + HelpText<"File is for a position independent executable">; def fno_validate_pch : Flag<["-"], "fno-validate-pch">, HelpText<"Disable validation of precompiled headers">; def dump_deserialized_pch_decls : Flag<["-"], "dump-deserialized-decls">, Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=273566&r1=273565&r2=273566&view=diff == --- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original) +++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Thu Jun 23 10:07:32 2016 @@ -2830,7 +2830,7 @@ llvm::GlobalVariable *CGObjCGNU::ObjCIva // to replace it with the real version for a library. In non-PIC code you // must compile with the fragile ABI if you want to use ivars from a // GCC-compiled class. -if (CGM.getLangOpts().PICLevel || CGM.getLangOpts().PIELevel) { +if (CGM.getLangOpts().PICLevel) { llvm::GlobalVariable *IvarOffsetGV = new llvm::GlobalVariable(TheModule, Int32Ty, false, llvm::GlobalValue::PrivateLinkage, OffsetGuess, Name+".guess"); Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=273566&r1=273565&r2=273566&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Thu Jun 23 10:07:32 2016 @@ -480,11 +480,8 @@ void CodeGenModule::Release() { if (uint32_t PLevel = Context.getLangOpts().PICLevel) { assert(PLevel < 3 && "Invalid PIC Level"); getModule().setPICLevel(static_cast(PLevel)); - } - - if (uint32_t PLevel = Context.getLangOpts().PIELevel) { -assert(PLevel < 3 && "Invalid PIE Level"); -getModule().setPIELevel(static_cast(PLevel)); +if (Context.getLangOpts().PIE) + getModule().setPIELevel(static_cast(PLevel)); } SimplifyPersonality(); Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=273566&r1=273565&r2=273566&view=diff ==
r273735 - Add support for musl-libc on ARM Linux.
Author: rafael Date: Fri Jun 24 16:35:06 2016 New Revision: 273735 URL: http://llvm.org/viewvc/llvm-project?rev=273735&view=rev Log: Add support for musl-libc on ARM Linux. Patch by Lei Zhang! Modified: cfe/trunk/lib/Basic/Targets.cpp cfe/trunk/lib/CodeGen/TargetInfo.cpp cfe/trunk/lib/Driver/ToolChains.cpp cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/test/CodeGen/arm-cc.c cfe/trunk/test/CodeGen/arm-eabi.c cfe/trunk/test/Driver/arm-abi.c cfe/trunk/test/Driver/arm-mfpu.c cfe/trunk/test/Driver/linux-ld.c Modified: cfe/trunk/lib/Basic/Targets.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=273735&r1=273734&r2=273735&view=diff == --- cfe/trunk/lib/Basic/Targets.cpp (original) +++ cfe/trunk/lib/Basic/Targets.cpp Fri Jun 24 16:35:06 2016 @@ -4876,6 +4876,8 @@ public: case llvm::Triple::Android: case llvm::Triple::GNUEABI: case llvm::Triple::GNUEABIHF: + case llvm::Triple::MuslEABI: + case llvm::Triple::MuslEABIHF: setABI("aapcs-linux"); break; case llvm::Triple::EABIHF: Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=273735&r1=273734&r2=273735&view=diff == --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Fri Jun 24 16:35:06 2016 @@ -4963,6 +4963,8 @@ public: case llvm::Triple::EABIHF: case llvm::Triple::GNUEABI: case llvm::Triple::GNUEABIHF: +case llvm::Triple::MuslEABI: +case llvm::Triple::MuslEABIHF: return true; default: return false; @@ -4973,6 +4975,7 @@ public: switch (getTarget().getTriple().getEnvironment()) { case llvm::Triple::EABIHF: case llvm::Triple::GNUEABIHF: +case llvm::Triple::MuslEABIHF: return true; default: return false; @@ -7933,6 +7936,7 @@ const TargetCodeGenInfo &CodeGenModule:: else if (CodeGenOpts.FloatABI == "hard" || (CodeGenOpts.FloatABI != "soft" && (Triple.getEnvironment() == llvm::Triple::GNUEABIHF || + Triple.getEnvironment() == llvm::Triple::MuslEABIHF || Triple.getEnvironment() == llvm::Triple::EABIHF))) Kind = ARMABIInfo::AAPCS_VFP; Modified: cfe/trunk/lib/Driver/ToolChains.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=273735&r1=273734&r2=273735&view=diff == --- cfe/trunk/lib/Driver/ToolChains.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains.cpp Fri Jun 24 16:35:06 2016 @@ -4157,8 +4157,23 @@ std::string Linux::getDynamicLinker(cons if (Triple.isAndroid()) return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker"; - else if (Triple.getEnvironment() == llvm::Triple::Musl) -return "/lib/ld-musl-" + Triple.getArchName().str() + ".so.1"; + else if (Triple.isMusl()) { +std::string ArchName; +switch (Arch) { +case llvm::Triple::thumb: + ArchName = "arm"; + break; +case llvm::Triple::thumbeb: + ArchName = "armeb"; + break; +default: + ArchName = Triple.getArchName().str(); +} +if (Triple.getEnvironment() == llvm::Triple::MuslEABIHF) + ArchName += "hf"; + +return "/lib/ld-musl-" + ArchName + ".so.1"; + } std::string LibDir; std::string Loader; Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=273735&r1=273734&r2=273735&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Fri Jun 24 16:35:06 2016 @@ -803,10 +803,12 @@ arm::FloatABI arm::getARMFloatABI(const default: switch (Triple.getEnvironment()) { case llvm::Triple::GNUEABIHF: + case llvm::Triple::MuslEABIHF: case llvm::Triple::EABIHF: ABI = FloatABI::Hard; break; case llvm::Triple::GNUEABI: + case llvm::Triple::MuslEABI: case llvm::Triple::EABI: // EABI is always AAPCS, and if it was not marked 'hard', it's softfp ABI = FloatABI::SoftFP; @@ -1052,6 +1054,8 @@ void Clang::AddARMTargetArgs(const llvm: case llvm::Triple::Android: case llvm::Triple::GNUEABI: case llvm::Triple::GNUEABIHF: +case llvm::Triple::MuslEABI: +case llvm::Triple::MuslEABIHF: ABIName = "aapcs-linux"; break; case llvm::Triple::EABIHF: Modified: cfe/trunk/test/CodeGen/arm-cc.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-cc.c?rev=273735&r1=273734&r2=273735&view=diff == --- cfe/trunk/test/Cod
r258698 - Pass --wrap=pthread_create to linker for -fsplit-stack.
Author: rafael Date: Mon Jan 25 12:29:16 2016 New Revision: 258698 URL: http://llvm.org/viewvc/llvm-project?rev=258698&view=rev Log: Pass --wrap=pthread_create to linker for -fsplit-stack. From https://gcc.gnu.org/ml/gcc-patches/2010-09/msg01807.html -fsplit-stack should pass --wrap=pthread_create to linker for -fsplit-stack It is needed to initialize the stack guard. This fixes PR 20148. Patch by H.J Lu! Added: cfe/trunk/test/Driver/split-stack-ld.c Modified: cfe/trunk/lib/Driver/Tools.cpp Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=258698&r1=258697&r2=258698&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Jan 25 12:29:16 2016 @@ -9001,6 +9001,9 @@ void gnutools::Linker::ConstructJob(Comp if (WantPthread && !isAndroid) CmdArgs.push_back("-lpthread"); + if (Args.hasArg(options::OPT_fsplit_stack)) +CmdArgs.push_back("--wrap=pthread_create"); + CmdArgs.push_back("-lc"); if (Args.hasArg(options::OPT_static)) Added: cfe/trunk/test/Driver/split-stack-ld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/split-stack-ld.c?rev=258698&view=auto == --- cfe/trunk/test/Driver/split-stack-ld.c (added) +++ cfe/trunk/test/Driver/split-stack-ld.c Mon Jan 25 12:29:16 2016 @@ -0,0 +1,17 @@ +// Test split stack ld flags. +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -target i386-unknown-linux -fsplit-stack \ +// RUN: -resource-dir=%S/Inputs/resource_dir \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-LINUX-I386 %s +// +// CHECK-LINUX-I386: "--wrap=pthread_create" +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -target x86_64-unknown-linux -fsplit-stack \ +// RUN: -resource-dir=%S/Inputs/resource_dir \ +// RUN: --sysroot=%S/Inputs/basic_linux_tree \ +// RUN: | FileCheck --check-prefix=CHECK-LINUX-X86-64 %s +// +// CHECK-LINUX-X86-64: "--wrap=pthread_create" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r259108 - Update for llvm change.
Author: rafael Date: Thu Jan 28 16:56:41 2016 New Revision: 259108 URL: http://llvm.org/viewvc/llvm-project?rev=259108&view=rev Log: Update for llvm change. Modified: cfe/trunk/test/CodeGen/pr18235.c Modified: cfe/trunk/test/CodeGen/pr18235.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/pr18235.c?rev=259108&r1=259107&r2=259108&view=diff == --- cfe/trunk/test/CodeGen/pr18235.c (original) +++ cfe/trunk/test/CodeGen/pr18235.c Thu Jan 28 16:56:41 2016 @@ -1,3 +1,3 @@ // RUN: not %clang_cc1 -triple le32-unknown-nacl %s -S -o - 2>&1 | FileCheck %s -// CHECK: error: unable to create target: 'No available targets are compatible with this triple, see -version for the available targets.' +// CHECK: error: unable to create target: 'No available targets are compatible with this triple. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r253191 - Update for the gnu flavor being renamed to old-gnu.
Author: rafael Date: Mon Nov 16 03:12:12 2015 New Revision: 253191 URL: http://llvm.org/viewvc/llvm-project?rev=253191&view=rev Log: Update for the gnu flavor being renamed to old-gnu. Modified: cfe/trunk/lib/Driver/Tools.cpp cfe/trunk/test/Driver/amdgpu-toolchain.c cfe/trunk/test/Driver/mingw-useld.c cfe/trunk/test/Driver/mips-mti-linux.c Modified: cfe/trunk/lib/Driver/Tools.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=253191&r1=253190&r2=253191&view=diff == --- cfe/trunk/lib/Driver/Tools.cpp (original) +++ cfe/trunk/lib/Driver/Tools.cpp Mon Nov 16 03:12:12 2015 @@ -6224,7 +6224,7 @@ void amdgpu::Linker::ConstructJob(Compil std::string Linker = getToolChain().GetProgramPath(getShortName()); ArgStringList CmdArgs; CmdArgs.push_back("-flavor"); - CmdArgs.push_back("gnu"); + CmdArgs.push_back("old-gnu"); CmdArgs.push_back("-target"); CmdArgs.push_back(Args.MakeArgString(getToolChain().getTripleString())); AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); @@ -8477,7 +8477,7 @@ void gnutools::Linker::ConstructJob(Comp if (llvm::sys::path::filename(ToolChain.Linker) == "lld") { CmdArgs.push_back("-flavor"); -CmdArgs.push_back("gnu"); +CmdArgs.push_back("old-gnu"); CmdArgs.push_back("-target"); CmdArgs.push_back(Args.MakeArgString(getToolChain().getTripleString())); } @@ -9467,7 +9467,7 @@ void MinGW::Linker::ConstructJob(Compila StringRef LinkerName = Args.getLastArgValue(options::OPT_fuse_ld_EQ, "ld"); if (LinkerName.equals_lower("lld")) { CmdArgs.push_back("-flavor"); -CmdArgs.push_back("gnu"); +CmdArgs.push_back("old-gnu"); } else if (!LinkerName.equals_lower("ld")) { D.Diag(diag::err_drv_unsupported_linker) << LinkerName; } Modified: cfe/trunk/test/Driver/amdgpu-toolchain.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/amdgpu-toolchain.c?rev=253191&r1=253190&r2=253191&view=diff == --- cfe/trunk/test/Driver/amdgpu-toolchain.c (original) +++ cfe/trunk/test/Driver/amdgpu-toolchain.c Mon Nov 16 03:12:12 2015 @@ -1,3 +1,3 @@ // RUN: %clang -### -target amdgcn--amdhsa -x assembler -mcpu=kaveri %s 2>&1 | FileCheck -check-prefix=AS_LINK %s // AS_LINK: clang{{.*}} "-cc1as" -// AS_LINK: lld{{.*}} "-flavor" "gnu" "-target" "amdgcn--amdhsa" +// AS_LINK: lld{{.*}} "-flavor" "old-gnu" "-target" "amdgcn--amdhsa" Modified: cfe/trunk/test/Driver/mingw-useld.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mingw-useld.c?rev=253191&r1=253190&r2=253191&view=diff == --- cfe/trunk/test/Driver/mingw-useld.c (original) +++ cfe/trunk/test/Driver/mingw-useld.c Mon Nov 16 03:12:12 2015 @@ -1,16 +1,16 @@ // RUN: %clang -### -target i686-pc-windows-gnu --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s 2>&1 | FileCheck -check-prefix=CHECK_LD_32 %s // CHECK_LD_32: {{ld|ld.exe}}" // CHECK_LD_32: "i386pe" -// CHECK_LD_32_NOT: "-flavor" "gnu" +// CHECK_LD_32_NOT: "-flavor" "old-gnu" // RUN: %clang -### -target i686-pc-windows-gnu --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -fuse-ld=lld 2>&1 | FileCheck -check-prefix=CHECK_LLD_32 %s -// CHECK_LLD_32: lld" "-flavor" "gnu" +// CHECK_LLD_32: lld" "-flavor" "old-gnu" // CHECK_LLD_32: "i386pe" // RUN: %clang -### -target x86_64-pc-windows-gnu --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -fuse-ld=lld 2>&1 | FileCheck -check-prefix=CHECK_LLD_64 %s -// CHECK_LLD_64: lld" "-flavor" "gnu" +// CHECK_LLD_64: lld" "-flavor" "old-gnu" // CHECK_LLD_64: "i386pep" // RUN: %clang -### -target arm-pc-windows-gnu --sysroot=%S/Inputs/mingw_clang_tree/mingw32 %s -fuse-ld=lld 2>&1 | FileCheck -check-prefix=CHECK_LLD_ARM %s -// CHECK_LLD_ARM: lld" "-flavor" "gnu" +// CHECK_LLD_ARM: lld" "-flavor" "old-gnu" // CHECK_LLD_ARM: "thumb2pe" Modified: cfe/trunk/test/Driver/mips-mti-linux.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-mti-linux.c?rev=253191&r1=253190&r2=253191&view=diff == --- cfe/trunk/test/Driver/mips-mti-linux.c (original) +++ cfe/trunk/test/Driver/mips-mti-linux.c Mon Nov 16 03:12:12 2015 @@ -14,7 +14,7 @@ // CHECK-BE-HF-32R2: "{{[^"]*}}clang{{[^"]*}}" {{.*}} "-triple" "mips-mti-linux" // CHECK-BE-HF-32R2-SAME: "-fuse-init-array" "-target-cpu" "mips32r2" // CHECK-BE-HF-32R2-SAME: "-isysroot" "{{.*}}mips_mti_linux/sysroot" -// CHECK-BE-HF-32R2: "{{[^"]*}}lld{{[^"]*}}" "-flavor" "gnu" "-target" "mips-mti-linux" +// CHECK-BE-HF-32R2: "{{[^"]*}}lld{{[^"]*}}" "-flavor" "old-gnu" "-target" "mips-mti-linux" // CHECK-BE-HF-32R2-SAME: "--sysroot=[[SYSROOT:[^"]+]]" {{.*}} "-dynamic-linker" "/lib/ld-musl-mips.so.1" // CHECK-BE-HF-32R2-SAME: "[[SYSROOT]]/mips-r2-hard-musl/usr
r253440 - Update for llvm change.
Author: rafael Date: Wed Nov 18 00:54:13 2015 New Revision: 253440 URL: http://llvm.org/viewvc/llvm-project?rev=253440&view=rev Log: Update for llvm change. Modified: cfe/trunk/include/clang/Lex/HeaderSearchOptions.h cfe/trunk/lib/CodeGen/CGObjCMac.cpp Modified: cfe/trunk/include/clang/Lex/HeaderSearchOptions.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/HeaderSearchOptions.h?rev=253440&r1=253439&r2=253440&view=diff == --- cfe/trunk/include/clang/Lex/HeaderSearchOptions.h (original) +++ cfe/trunk/include/clang/Lex/HeaderSearchOptions.h Wed Nov 18 00:54:13 2015 @@ -141,7 +141,7 @@ public: /// \brief The set of macro names that should be ignored for the purposes /// of computing the module hash. - llvm::SetVector ModulesIgnoreMacros; + llvm::SmallSetVector ModulesIgnoreMacros; /// \brief The set of user-provided virtual filesystem overlay files. std::vector VFSOverlayFiles; Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=253440&r1=253439&r2=253440&view=diff == --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original) +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Wed Nov 18 00:54:13 2015 @@ -833,7 +833,7 @@ protected: llvm::DenseMap MethodVarNames; /// DefinedCategoryNames - list of category names in form Class_Category. - llvm::SetVector DefinedCategoryNames; + llvm::SmallSetVector DefinedCategoryNames; /// MethodVarTypes - uniqued method type signatures. We have to use /// a StringMap here because have no other unique reference. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r254450 - Update for llvm api change.
Author: rafael Date: Tue Dec 1 13:51:03 2015 New Revision: 254450 URL: http://llvm.org/viewvc/llvm-project?rev=254450&view=rev Log: Update for llvm api change. Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=254450&r1=254449&r2=254450&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Tue Dec 1 13:51:03 2015 @@ -165,7 +165,7 @@ namespace clang { for (auto &I : LinkModules) { unsigned LinkFlags = I.first; llvm::Module *LinkModule = I.second.get(); -if (Linker::LinkModules(M, LinkModule, +if (Linker::linkModules(*M, *LinkModule, [=](const DiagnosticInfo &DI) { linkerDiagnosticHandler(DI, LinkModule); }, ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r255572 - Update for llvm api change.
Author: rafael Date: Mon Dec 14 17:17:07 2015 New Revision: 255572 URL: http://llvm.org/viewvc/llvm-project?rev=255572&view=rev Log: Update for llvm api change. Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=255572&r1=255571&r2=255572&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Mon Dec 14 17:17:07 2015 @@ -41,24 +41,6 @@ using namespace clang; using namespace llvm; namespace clang { -/// Diagnostic handler used by invocations of Linker::LinkModules -static void linkerDiagnosticHandler(const DiagnosticInfo &DI, -const llvm::Module *LinkModule, -DiagnosticsEngine &Diags) { - if (DI.getSeverity() != DS_Error) -return; - - std::string MsgStorage; - { -raw_string_ostream Stream(MsgStorage); -DiagnosticPrinterRawOStream DP(Stream); -DI.print(DP); - } - - Diags.Report(diag::err_fe_cannot_link_module) - << LinkModule->getModuleIdentifier() << MsgStorage; -} - class BackendConsumer : public ASTConsumer { virtual void anchor(); DiagnosticsEngine &Diags; @@ -77,6 +59,10 @@ static void linkerDiagnosticHandler(cons SmallVector>, 4> LinkModules; +// This is here so that the diagnostic printer knows the module a diagnostic +// refers to. +llvm::Module *CurLinkModule = nullptr; + public: BackendConsumer( BackendAction Action, DiagnosticsEngine &Diags, @@ -181,18 +167,6 @@ static void linkerDiagnosticHandler(cons assert(TheModule.get() == M && "Unexpected module change during IR generation"); - // Link LinkModule into this module if present, preserving its validity. - for (auto &I : LinkModules) { -unsigned LinkFlags = I.first; -llvm::Module *LinkModule = I.second.get(); -if (Linker::linkModules(*M, *LinkModule, -[=](const DiagnosticInfo &DI) { - linkerDiagnosticHandler(DI, LinkModule, Diags); -}, -LinkFlags)) - return; - } - // Install an inline asm handler so that diagnostics get printed through // our diagnostics hooks. LLVMContext &Ctx = TheModule->getContext(); @@ -206,6 +180,14 @@ static void linkerDiagnosticHandler(cons void *OldDiagnosticContext = Ctx.getDiagnosticContext(); Ctx.setDiagnosticHandler(DiagnosticHandler, this); + // Link LinkModule into this module if present, preserving its validity. + for (auto &I : LinkModules) { +unsigned LinkFlags = I.first; +CurLinkModule = I.second.get(); +if (Linker::linkModules(*M, *CurLinkModule, LinkFlags)) + return; + } + EmitBackendOutput(Diags, CodeGenOpts, TargetOpts, LangOpts, C.getTargetInfo().getDataLayoutString(), TheModule.get(), Action, AsmOutStream); @@ -579,6 +561,13 @@ void BackendConsumer::DiagnosticHandlerI return; ComputeDiagID(Severity, backend_frame_larger_than, DiagID); break; + case DK_Linker: +assert(CurLinkModule); +// FIXME: stop eating the warnings and notes. +if (Severity != DS_Error) + return; +DiagID = diag::err_fe_cannot_link_module; +break; case llvm::DK_OptimizationRemark: // Optimization remarks are always handled completely by this // handler. There is no generic way of emitting them. @@ -624,6 +613,12 @@ void BackendConsumer::DiagnosticHandlerI DI.print(DP); } + if (DiagID == diag::err_fe_cannot_link_module) { +Diags.Report(diag::err_fe_cannot_link_module) +<< CurLinkModule->getModuleIdentifier() << MsgStorage; +return; + } + // Report the backend message using the usual diagnostic mechanism. FullSourceLoc Loc; Diags.Report(Loc, DiagID).AddString(MsgStorage); @@ -787,8 +782,7 @@ void CodeGenAction::ExecuteAction() { } auto DiagHandler = [&](const DiagnosticInfo &DI) { - linkerDiagnosticHandler(DI, TheModule.get(), - getCompilerInstance().getDiagnostics()); + TheModule->getContext().diagnose(DI); }; // If we are performing ThinLTO importing compilation (indicated by @@ -812,7 +806,7 @@ void CodeGenAction::ExecuteAction() { assert(Index); // Currently this requires creating a new Module object. std::unique_ptr RenamedModule = - renameModuleForThinLTO(TheModule, Index.get(), DiagHandler); + renameModuleForThinLTO(TheModule, Index.get()); if (!RenamedModule) return; ___ cfe-commits mailing list cfe-commits@lists.
r255838 - Update for llvm API change.
Author: rafael Date: Wed Dec 16 16:59:09 2015 New Revision: 255838 URL: http://llvm.org/viewvc/llvm-project?rev=255838&view=rev Log: Update for llvm API change. Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp cfe/trunk/lib/Frontend/HeaderIncludeGen.cpp Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=255838&r1=255837&r2=255838&view=diff == --- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Wed Dec 16 16:59:09 2015 @@ -155,7 +155,6 @@ static void SetUpDiagnosticLog(Diagnosti << DiagOpts->DiagnosticLogFile << EC.message(); } else { FileOS->SetUnbuffered(); - FileOS->SetUseAtomicWrites(true); OS = FileOS.get(); StreamOwner = std::move(FileOS); } Modified: cfe/trunk/lib/Frontend/HeaderIncludeGen.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/HeaderIncludeGen.cpp?rev=255838&r1=255837&r2=255838&view=diff == --- cfe/trunk/lib/Frontend/HeaderIncludeGen.cpp (original) +++ cfe/trunk/lib/Frontend/HeaderIncludeGen.cpp Wed Dec 16 16:59:09 2015 @@ -92,7 +92,6 @@ void clang::AttachHeaderIncludeGen(Prepr delete OS; } else { OS->SetUnbuffered(); - OS->SetUseAtomicWrites(true); OutputFile = OS; OwnsOutputFile = true; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r255843 - Update for llvm api change.
Author: rafael Date: Wed Dec 16 17:16:37 2015 New Revision: 255843 URL: http://llvm.org/viewvc/llvm-project?rev=255843&view=rev Log: Update for llvm api change. Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=255843&r1=255842&r2=255843&view=diff == --- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original) +++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Wed Dec 16 17:16:37 2015 @@ -184,7 +184,7 @@ namespace clang { for (auto &I : LinkModules) { unsigned LinkFlags = I.first; CurLinkModule = I.second.get(); -if (Linker::linkModules(*M, *CurLinkModule, LinkFlags)) +if (Linker::linkModules(*M, std::move(I.second), LinkFlags)) return; } @@ -806,7 +806,7 @@ void CodeGenAction::ExecuteAction() { assert(Index); // Currently this requires creating a new Module object. std::unique_ptr RenamedModule = - renameModuleForThinLTO(TheModule, Index.get()); + renameModuleForThinLTO(std::move(TheModule), Index.get()); if (!RenamedModule) return; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits