Skip to content

Commit eb72f13

Browse files
committed
Merge commit 'e3c120a585d2740bd1a4de23112fccd82013adbc' into llvmspirv_pulldown
2 parents c206caa + e3c120a commit eb72f13

File tree

299 files changed

+6744
-1877
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

299 files changed

+6744
-1877
lines changed

bolt/test/AArch64/ifunc.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@
2828
// O0_CHECK: adr x{{[0-9]+}}, ifoo
2929
// O3_CHECK: b "{{resolver_foo|ifoo}}{{.*}}@PLT"
3030

31-
#include <stdio.h>
32-
#include <string.h>
33-
3431
static void foo() {}
3532

3633
static void *resolver_foo(void) { return foo; }

clang/cmake/caches/Fuchsia-stage2.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ if(APPLE)
8181
set(LIBCXX_ABI_VERSION 2 CACHE STRING "")
8282
set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
8383
set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
84-
set(LIBCXX_HARDENING_MODE "unchecked" CACHE STRING "")
84+
set(LIBCXX_HARDENING_MODE "none" CACHE STRING "")
8585
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
8686
set(RUNTIMES_CMAKE_ARGS "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13;-DCMAKE_OSX_ARCHITECTURES=arm64|x86_64" CACHE STRING "")
8787
endif()

clang/cmake/caches/Fuchsia.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ else()
116116
set(LIBCXX_ABI_VERSION 2 CACHE STRING "")
117117
set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
118118
set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
119-
set(LIBCXX_HARDENING_MODE "unchecked" CACHE STRING "")
119+
set(LIBCXX_HARDENING_MODE "none" CACHE STRING "")
120120
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
121121
set(LLVM_ENABLE_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind" CACHE STRING "")
122122
set(RUNTIMES_CMAKE_ARGS "-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13;-DCMAKE_OSX_ARCHITECTURES=arm64|x86_64" CACHE STRING "")

clang/include/clang/Driver/Options.td

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7258,9 +7258,6 @@ let Visibility = [CC1Option] in {
72587258
def sys_header_deps : Flag<["-"], "sys-header-deps">,
72597259
HelpText<"Include system headers in dependency output">,
72607260
MarshallingInfoFlag<DependencyOutputOpts<"IncludeSystemHeaders">>;
7261-
def canonical_system_headers : Flag<["-"], "canonical-system-headers">,
7262-
HelpText<"Canonicalize system headers in dependency output">,
7263-
MarshallingInfoFlag<DependencyOutputOpts<"CanonicalSystemHeaders">>;
72647261
def module_file_deps : Flag<["-"], "module-file-deps">,
72657262
HelpText<"Include module files in dependency output">,
72667263
MarshallingInfoFlag<DependencyOutputOpts<"IncludeModuleFiles">>;

clang/include/clang/Frontend/DependencyOutputOptions.h

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ class DependencyOutputOptions {
3636
LLVM_PREFERRED_TYPE(bool)
3737
unsigned IncludeSystemHeaders : 1; ///< Include system header dependencies.
3838
LLVM_PREFERRED_TYPE(bool)
39-
unsigned
40-
CanonicalSystemHeaders : 1; ///< canonicalize system header dependencies.
41-
LLVM_PREFERRED_TYPE(bool)
4239
unsigned ShowHeaderIncludes : 1; ///< Show header inclusions (-H).
4340
LLVM_PREFERRED_TYPE(bool)
4441
unsigned UsePhonyTargets : 1; ///< Include phony targets for each
@@ -95,11 +92,10 @@ class DependencyOutputOptions {
9592

9693
public:
9794
DependencyOutputOptions()
98-
: IncludeSystemHeaders(0), CanonicalSystemHeaders(0),
99-
ShowHeaderIncludes(0), UsePhonyTargets(0), AddMissingHeaderDeps(0),
100-
IncludeModuleFiles(0), ShowSkippedHeaderIncludes(0),
101-
HeaderIncludeFormat(HIFMT_Textual), HeaderIncludeFiltering(HIFIL_None) {
102-
}
95+
: IncludeSystemHeaders(0), ShowHeaderIncludes(0), UsePhonyTargets(0),
96+
AddMissingHeaderDeps(0), IncludeModuleFiles(0),
97+
ShowSkippedHeaderIncludes(0), HeaderIncludeFormat(HIFMT_Textual),
98+
HeaderIncludeFiltering(HIFIL_None) {}
10399
};
104100

105101
} // end namespace clang

clang/include/clang/Frontend/Utils.h

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class ExternalSemaSource;
4141
class FrontendOptions;
4242
class PCHContainerReader;
4343
class Preprocessor;
44-
class FileManager;
4544
class PreprocessorOptions;
4645
class PreprocessorOutputOptions;
4746

@@ -80,14 +79,11 @@ class DependencyCollector {
8079
/// Return true if system files should be passed to sawDependency().
8180
virtual bool needSystemDependencies() { return false; }
8281

83-
/// Return true if system files should be canonicalized.
84-
virtual bool shouldCanonicalizeSystemDependencies() { return false; }
85-
8682
/// Add a dependency \p Filename if it has not been seen before and
8783
/// sawDependency() returns true.
8884
virtual void maybeAddDependency(StringRef Filename, bool FromModule,
8985
bool IsSystem, bool IsModuleFile,
90-
FileManager *FileMgr, bool IsMissing);
86+
bool IsMissing);
9187

9288
protected:
9389
/// Return true if the filename was added to the list of dependencies, false
@@ -116,10 +112,6 @@ class DependencyFileGenerator : public DependencyCollector {
116112
bool sawDependency(StringRef Filename, bool FromModule, bool IsSystem,
117113
bool IsModuleFile, bool IsMissing) final;
118114

119-
bool shouldCanonicalizeSystemDependencies() override {
120-
return CanonicalSystemHeaders;
121-
}
122-
123115
protected:
124116
void outputDependencyFile(llvm::raw_ostream &OS);
125117

@@ -130,7 +122,6 @@ class DependencyFileGenerator : public DependencyCollector {
130122
std::string DependencyFilter;
131123
std::vector<std::string> Targets;
132124
bool IncludeSystemHeaders;
133-
bool CanonicalSystemHeaders;
134125
bool PhonyTarget;
135126
bool AddMissingHeaderDeps;
136127
bool SeenMissingHeader;

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 34 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -5794,18 +5794,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
57945794
llvm::FunctionType *FTy = F->getFunctionType();
57955795

57965796
for (unsigned i = 0, e = E->getNumArgs(); i != e; ++i) {
5797-
Value *ArgValue;
5798-
// If this is a normal argument, just emit it as a scalar.
5799-
if ((ICEArguments & (1 << i)) == 0) {
5800-
ArgValue = EmitScalarExpr(E->getArg(i));
5801-
} else {
5802-
// If this is required to be a constant, constant fold it so that we
5803-
// know that the generated intrinsic gets a ConstantInt.
5804-
ArgValue = llvm::ConstantInt::get(
5805-
getLLVMContext(),
5806-
*E->getArg(i)->getIntegerConstantExpr(getContext()));
5807-
}
5808-
5797+
Value *ArgValue = EmitScalarOrConstFoldImmArg(ICEArguments, i, E);
58095798
// If the intrinsic arg type is different from the builtin arg type
58105799
// we need to do a bit cast.
58115800
llvm::Type *PTy = FTy->getParamType(i);
@@ -8686,15 +8675,7 @@ Value *CodeGenFunction::EmitARMBuiltinExpr(unsigned BuiltinID,
86868675
}
86878676
}
86888677

8689-
if ((ICEArguments & (1 << i)) == 0) {
8690-
Ops.push_back(EmitScalarExpr(E->getArg(i)));
8691-
} else {
8692-
// If this is required to be a constant, constant fold it so that we know
8693-
// that the generated intrinsic gets a ConstantInt.
8694-
Ops.push_back(llvm::ConstantInt::get(
8695-
getLLVMContext(),
8696-
*E->getArg(i)->getIntegerConstantExpr(getContext())));
8697-
}
8678+
Ops.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, i, E));
86988679
}
86998680

87008681
switch (BuiltinID) {
@@ -11187,15 +11168,7 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID,
1118711168
continue;
1118811169
}
1118911170
}
11190-
if ((ICEArguments & (1 << i)) == 0) {
11191-
Ops.push_back(EmitScalarExpr(E->getArg(i)));
11192-
} else {
11193-
// If this is required to be a constant, constant fold it so that we know
11194-
// that the generated intrinsic gets a ConstantInt.
11195-
Ops.push_back(llvm::ConstantInt::get(
11196-
getLLVMContext(),
11197-
*E->getArg(i)->getIntegerConstantExpr(getContext())));
11198-
}
11171+
Ops.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, i, E));
1119911172
}
1120011173

1120111174
auto SISDMap = ArrayRef(AArch64SISDIntrinsicMap);
@@ -13909,16 +13882,7 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
1390913882
assert(Error == ASTContext::GE_None && "Should not codegen an error");
1391013883

1391113884
for (unsigned i = 0, e = E->getNumArgs(); i != e; i++) {
13912-
// If this is a normal argument, just emit it as a scalar.
13913-
if ((ICEArguments & (1 << i)) == 0) {
13914-
Ops.push_back(EmitScalarExpr(E->getArg(i)));
13915-
continue;
13916-
}
13917-
13918-
// If this is required to be a constant, constant fold it so that we know
13919-
// that the generated intrinsic gets a ConstantInt.
13920-
Ops.push_back(llvm::ConstantInt::get(
13921-
getLLVMContext(), *E->getArg(i)->getIntegerConstantExpr(getContext())));
13885+
Ops.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, i, E));
1392213886
}
1392313887

1392413888
// These exist so that the builtin that takes an immediate can be bounds
@@ -17564,19 +17528,19 @@ Value *EmitAMDGPUImplicitArgPtr(CodeGenFunction &CGF) {
1756417528
/// Emit code based on Code Object ABI version.
1756517529
/// COV_4 : Emit code to use dispatch ptr
1756617530
/// COV_5 : Emit code to use implicitarg ptr
17567-
/// COV_NONE : Emit code to load a global variable "llvm.amdgcn.abi.version"
17531+
/// COV_NONE : Emit code to load a global variable "__oclc_ABI_version"
1756817532
/// and use its value for COV_4 or COV_5 approach. It is used for
1756917533
/// compiling device libraries in an ABI-agnostic way.
1757017534
///
17571-
/// Note: "llvm.amdgcn.abi.version" is supposed to be emitted and intialized by
17535+
/// Note: "__oclc_ABI_version" is supposed to be emitted and intialized by
1757217536
/// clang during compilation of user code.
1757317537
Value *EmitAMDGPUWorkGroupSize(CodeGenFunction &CGF, unsigned Index) {
1757417538
llvm::LoadInst *LD;
1757517539

1757617540
auto Cov = CGF.getTarget().getTargetOpts().CodeObjectVersion;
1757717541

1757817542
if (Cov == clang::TargetOptions::COV_None) {
17579-
StringRef Name = "llvm.amdgcn.abi.version";
17543+
StringRef Name = "__oclc_ABI_version";
1758017544
auto *ABIVersionC = CGF.CGM.getModule().getNamedGlobal(Name);
1758117545
if (!ABIVersionC)
1758217546
ABIVersionC = new llvm::GlobalVariable(
@@ -17684,6 +17648,23 @@ void CodeGenFunction::ProcessOrderScopeAMDGCN(Value *Order, Value *Scope,
1768417648
SSID = getLLVMContext().getOrInsertSyncScopeID(scp);
1768517649
}
1768617650

17651+
llvm::Value *CodeGenFunction::EmitScalarOrConstFoldImmArg(unsigned ICEArguments,
17652+
unsigned Idx,
17653+
const CallExpr *E) {
17654+
llvm::Value *Arg = nullptr;
17655+
if ((ICEArguments & (1 << Idx)) == 0) {
17656+
Arg = EmitScalarExpr(E->getArg(Idx));
17657+
} else {
17658+
// If this is required to be a constant, constant fold it so that we
17659+
// know that the generated intrinsic gets a ConstantInt.
17660+
std::optional<llvm::APSInt> Result =
17661+
E->getArg(Idx)->getIntegerConstantExpr(getContext());
17662+
assert(Result && "Expected argument to be a constant");
17663+
Arg = llvm::ConstantInt::get(getLLVMContext(), *Result);
17664+
}
17665+
return Arg;
17666+
}
17667+
1768717668
Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
1768817669
const CallExpr *E) {
1768917670
llvm::AtomicOrdering AO = llvm::AtomicOrdering::SequentiallyConsistent;
@@ -17734,8 +17715,15 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
1773417715
case AMDGPU::BI__builtin_amdgcn_mov_dpp:
1773517716
case AMDGPU::BI__builtin_amdgcn_update_dpp: {
1773617717
llvm::SmallVector<llvm::Value *, 6> Args;
17737-
for (unsigned I = 0; I != E->getNumArgs(); ++I)
17738-
Args.push_back(EmitScalarExpr(E->getArg(I)));
17718+
// Find out if any arguments are required to be integer constant
17719+
// expressions.
17720+
unsigned ICEArguments = 0;
17721+
ASTContext::GetBuiltinTypeError Error;
17722+
getContext().GetBuiltinType(BuiltinID, Error, &ICEArguments);
17723+
assert(Error == ASTContext::GE_None && "Should not codegen an error");
17724+
for (unsigned I = 0; I != E->getNumArgs(); ++I) {
17725+
Args.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, I, E));
17726+
}
1773917727
assert(Args.size() == 5 || Args.size() == 6);
1774017728
if (Args.size() == 5)
1774117729
Args.insert(Args.begin(), llvm::PoisonValue::get(Args[0]->getType()));
@@ -22953,17 +22941,7 @@ Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
2295322941
Ops.push_back(AggValue);
2295422942
continue;
2295522943
}
22956-
22957-
// If this is a normal argument, just emit it as a scalar.
22958-
if ((ICEArguments & (1 << i)) == 0) {
22959-
Ops.push_back(EmitScalarExpr(E->getArg(i)));
22960-
continue;
22961-
}
22962-
22963-
// If this is required to be a constant, constant fold it so that we know
22964-
// that the generated intrinsic gets a ConstantInt.
22965-
Ops.push_back(llvm::ConstantInt::get(
22966-
getLLVMContext(), *E->getArg(i)->getIntegerConstantExpr(getContext())));
22944+
Ops.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, i, E));
2296722945
}
2296822946

2296922947
Intrinsic::ID ID = Intrinsic::not_intrinsic;

clang/lib/CodeGen/CodeGenFunction.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4349,6 +4349,8 @@ class CodeGenFunction : public CodeGenTypeCache {
43494349
llvm::Value *EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
43504350
llvm::Value *EmitPPCBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
43514351
llvm::Value *EmitAMDGPUBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
4352+
llvm::Value *EmitScalarOrConstFoldImmArg(unsigned ICEArguments, unsigned Idx,
4353+
const CallExpr *E);
43524354
llvm::Value *EmitSystemZBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
43534355
llvm::Value *EmitNVPTXBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
43544356
llvm::Value *EmitWebAssemblyBuiltinExpr(unsigned BuiltinID,

clang/lib/CodeGen/Targets/AMDGPU.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,11 +395,15 @@ void AMDGPUTargetCodeGenInfo::addAMDGCNMetadata(llvm::GlobalValue *GV,
395395
/// AMDGPU ROCm device libraries.
396396
void AMDGPUTargetCodeGenInfo::emitTargetGlobals(
397397
CodeGen::CodeGenModule &CGM) const {
398-
StringRef Name = "llvm.amdgcn.abi.version";
398+
StringRef Name = "__oclc_ABI_version";
399399
llvm::GlobalVariable *OriginalGV = CGM.getModule().getNamedGlobal(Name);
400400
if (OriginalGV && !llvm::GlobalVariable::isExternalLinkage(OriginalGV->getLinkage()))
401401
return;
402402

403+
if (CGM.getTarget().getTargetOpts().CodeObjectVersion ==
404+
clang::TargetOptions::COV_None)
405+
return;
406+
403407
auto *Type = llvm::IntegerType::getIntNTy(CGM.getModule().getContext(), 32);
404408
llvm::Constant *COV = llvm::ConstantInt::get(
405409
Type, CGM.getTarget().getTargetOpts().CodeObjectVersion);

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1260,9 +1260,6 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA,
12601260
if (ArgM->getOption().matches(options::OPT_M) ||
12611261
ArgM->getOption().matches(options::OPT_MD))
12621262
CmdArgs.push_back("-sys-header-deps");
1263-
if (Args.hasFlag(options::OPT_canonical_prefixes,
1264-
options::OPT_no_canonical_prefixes, true))
1265-
CmdArgs.push_back("-canonical-system-headers");
12661263
if ((isa<PrecompileJobAction>(JA) &&
12671264
!Args.hasArg(options::OPT_fno_module_file_deps)) ||
12681265
Args.hasArg(options::OPT_fmodule_file_deps))

0 commit comments

Comments
 (0)