aboutsummaryrefslogtreecommitdiff
path: root/llvm/include
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/include')
-rw-r--r--llvm/include/llvm/Analysis/InlineSizeEstimatorAnalysis.h47
-rw-r--r--llvm/include/llvm/Analysis/TargetLibraryInfo.h20
-rw-r--r--llvm/include/llvm/Bitcode/BitcodeWriter.h1
-rw-r--r--llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h16
-rw-r--r--llvm/include/llvm/CodeGen/BasicTTIImpl.h30
-rw-r--r--llvm/include/llvm/CodeGen/MachineBasicBlock.h2
-rw-r--r--llvm/include/llvm/CodeGen/SelectionDAG.h14
-rw-r--r--llvm/include/llvm/CodeGen/TargetInstrInfo.h11
-rw-r--r--llvm/include/llvm/CodeGen/TargetSubtargetInfo.h4
-rw-r--r--llvm/include/llvm/DebugInfo/GSYM/GsymContext.h1
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h1
-rw-r--r--llvm/include/llvm/Frontend/OpenMP/ClauseT.h1
-rw-r--r--llvm/include/llvm/Frontend/OpenMP/OMPConstants.h10
-rw-r--r--llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h25
-rw-r--r--llvm/include/llvm/IR/DebugInfo.h4
-rw-r--r--llvm/include/llvm/IR/DebugInfoMetadata.h33
-rw-r--r--llvm/include/llvm/IR/DiagnosticInfo.h1
-rw-r--r--llvm/include/llvm/IR/Dominators.h1
-rw-r--r--llvm/include/llvm/IR/MemoryModelRelaxationAnnotations.h3
-rw-r--r--llvm/include/llvm/IR/ProfileSummary.h1
-rw-r--r--llvm/include/llvm/IR/RuntimeLibcalls.h15
-rw-r--r--llvm/include/llvm/IR/RuntimeLibcalls.td58
-rw-r--r--llvm/include/llvm/IR/SystemLibraries.h39
-rw-r--r--llvm/include/llvm/MC/DXContainerPSVInfo.h1
-rw-r--r--llvm/include/llvm/MC/MCAsmInfo.h2
-rw-r--r--llvm/include/llvm/MC/MCAssembler.h2
-rw-r--r--llvm/include/llvm/Option/Arg.h2
-rw-r--r--llvm/include/llvm/Passes/PassBuilder.h2
-rw-r--r--llvm/include/llvm/Remarks/YAMLRemarkSerializer.h1
-rw-r--r--llvm/include/llvm/Support/FormatVariadic.h1
-rw-r--r--llvm/include/llvm/Support/Jobserver.h1
-rw-r--r--llvm/include/llvm/Support/SpecialCaseList.h47
-rw-r--r--llvm/include/llvm/Support/TypeSize.h1
-rw-r--r--llvm/include/llvm/Support/UnicodeCharRanges.h1
-rw-r--r--llvm/include/llvm/TableGen/DirectiveEmitter.h1
-rw-r--r--llvm/include/llvm/Transforms/Scalar/DropUnnecessaryAssumes.h6
-rw-r--r--llvm/include/llvm/Transforms/Scalar/JumpThreading.h1
-rw-r--r--llvm/include/llvm/Transforms/Scalar/Scalarizer.h1
-rw-r--r--llvm/include/llvm/Transforms/Utils/LowerVectorIntrinsics.h1
-rw-r--r--llvm/include/llvm/Transforms/Utils/SplitModuleByCategory.h1
-rw-r--r--llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h1
-rw-r--r--llvm/include/llvm/XRay/FDRRecordConsumer.h1
42 files changed, 253 insertions, 159 deletions
diff --git a/llvm/include/llvm/Analysis/InlineSizeEstimatorAnalysis.h b/llvm/include/llvm/Analysis/InlineSizeEstimatorAnalysis.h
deleted file mode 100644
index b44edd3..0000000
--- a/llvm/include/llvm/Analysis/InlineSizeEstimatorAnalysis.h
+++ /dev/null
@@ -1,47 +0,0 @@
-//===- InlineSizeEstimatorAnalysis.h - ML size estimator --------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-
-#ifndef LLVM_ANALYSIS_INLINESIZEESTIMATORANALYSIS_H
-#define LLVM_ANALYSIS_INLINESIZEESTIMATORANALYSIS_H
-
-#include "llvm/IR/PassManager.h"
-
-namespace llvm {
-class Function;
-
-class TFModelEvaluator;
-class InlineSizeEstimatorAnalysis
- : public AnalysisInfoMixin<InlineSizeEstimatorAnalysis> {
-public:
- InlineSizeEstimatorAnalysis();
- InlineSizeEstimatorAnalysis(InlineSizeEstimatorAnalysis &&);
- ~InlineSizeEstimatorAnalysis();
-
- static AnalysisKey Key;
- using Result = std::optional<size_t>;
- Result run(const Function &F, FunctionAnalysisManager &FAM);
- static bool isEvaluatorRequested();
-
-private:
- std::unique_ptr<TFModelEvaluator> Evaluator;
-};
-
-class InlineSizeEstimatorAnalysisPrinterPass
- : public PassInfoMixin<InlineSizeEstimatorAnalysisPrinterPass> {
- raw_ostream &OS;
-
-public:
- explicit InlineSizeEstimatorAnalysisPrinterPass(raw_ostream &OS) : OS(OS) {}
-
- PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
-
- static bool isRequired() { return true; }
-};
-} // namespace llvm
-#endif // LLVM_ANALYSIS_INLINESIZEESTIMATORANALYSIS_H
diff --git a/llvm/include/llvm/Analysis/TargetLibraryInfo.h b/llvm/include/llvm/Analysis/TargetLibraryInfo.h
index 3f39b47..7895443 100644
--- a/llvm/include/llvm/Analysis/TargetLibraryInfo.h
+++ b/llvm/include/llvm/Analysis/TargetLibraryInfo.h
@@ -23,6 +23,7 @@
namespace llvm {
template <typename T> class ArrayRef;
+enum class VectorLibrary;
/// Provides info so a possible vectorization of a function can be
/// computed. Function 'VectorFnName' is equivalent to 'ScalarFnName'
@@ -117,25 +118,6 @@ class TargetLibraryInfoImpl {
const Module &M) const;
public:
- /// List of known vector-functions libraries.
- ///
- /// The vector-functions library defines, which functions are vectorizable
- /// and with which factor. The library can be specified by either frontend,
- /// or a commandline option, and then used by
- /// addVectorizableFunctionsFromVecLib for filling up the tables of
- /// vectorizable functions.
- enum VectorLibrary {
- NoLibrary, // Don't use any vector library.
- Accelerate, // Use Accelerate framework.
- DarwinLibSystemM, // Use Darwin's libsystem_m.
- LIBMVEC, // GLIBC Vector Math library.
- MASSV, // IBM MASS vector library.
- SVML, // Intel short vector math library.
- SLEEFGNUABI, // SLEEF - SIMD Library for Evaluating Elementary Functions.
- ArmPL, // Arm Performance Libraries.
- AMDLIBM // AMD Math Vector library.
- };
-
TargetLibraryInfoImpl() = delete;
LLVM_ABI explicit TargetLibraryInfoImpl(const Triple &T);
diff --git a/llvm/include/llvm/Bitcode/BitcodeWriter.h b/llvm/include/llvm/Bitcode/BitcodeWriter.h
index 1e72e84..d88e261 100644
--- a/llvm/include/llvm/Bitcode/BitcodeWriter.h
+++ b/llvm/include/llvm/Bitcode/BitcodeWriter.h
@@ -20,7 +20,6 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Support/MemoryBufferRef.h"
#include <memory>
-#include <string>
#include <vector>
namespace llvm {
diff --git a/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h b/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
index 7b1a5f5..ee1f283 100644
--- a/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
+++ b/llvm/include/llvm/CodeGen/BasicBlockSectionsProfileReader.h
@@ -68,17 +68,13 @@ public:
BasicBlockSectionsProfileReader() = default;
- // Returns true if basic block sections profile exist for function \p
- // FuncName.
+ // Returns true if function \p FuncName is hot based on the basic block
+ // section profile.
bool isFunctionHot(StringRef FuncName) const;
- // Returns a pair with first element representing whether basic block sections
- // profile exist for the function \p FuncName, and the second element
- // representing the basic block sections profile (cluster info) for this
- // function. If the first element is true and the second element is empty, it
- // means unique basic block sections are desired for all basic blocks of the
- // function.
- std::pair<bool, SmallVector<BBClusterInfo>>
+ // Returns the cluster info for the function \p FuncName. Returns an empty
+ // vector if function has no cluster info.
+ SmallVector<BBClusterInfo>
getClusterInfoForFunction(StringRef FuncName) const;
// Returns the path clonings for the given function.
@@ -190,7 +186,7 @@ public:
bool isFunctionHot(StringRef FuncName) const;
- std::pair<bool, SmallVector<BBClusterInfo>>
+ SmallVector<BBClusterInfo>
getClusterInfoForFunction(StringRef FuncName) const;
SmallVector<SmallVector<unsigned>>
diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
index f585257..1c167af 100644
--- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h
+++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
@@ -316,12 +316,22 @@ private:
EVT ScalarVT = VT.getScalarType();
RTLIB::Libcall LC = RTLIB::UNKNOWN_LIBCALL;
+ /// Migration flag. IsVectorCall cases directly know about the vector
+ /// libcall in RuntimeLibcallsInfo and shouldn't try to use
+ /// LibInfo->getVectorMappingInfo.
+ bool IsVectorCall = false;
+
switch (ICA.getID()) {
case Intrinsic::modf:
LC = RTLIB::getMODF(ScalarVT);
break;
case Intrinsic::sincospi:
- LC = RTLIB::getSINCOSPI(ScalarVT);
+ LC = RTLIB::getSINCOSPI(VT);
+ if (LC == RTLIB::UNKNOWN_LIBCALL)
+ LC = RTLIB::getSINCOSPI(ScalarVT);
+ else if (VT.isVector())
+ IsVectorCall = true;
+
break;
case Intrinsic::sincos:
LC = RTLIB::getSINCOS(ScalarVT);
@@ -345,17 +355,23 @@ private:
LLVMContext &Ctx = RetTy->getContext();
ElementCount VF = getVectorizedTypeVF(RetTy);
VecDesc const *VD = nullptr;
- for (bool Masked : {false, true}) {
- if ((VD = LibInfo->getVectorMappingInfo(LCName, VF, Masked)))
- break;
+
+ if (!IsVectorCall) {
+ for (bool Masked : {false, true}) {
+ if ((VD = LibInfo->getVectorMappingInfo(LCName, VF, Masked)))
+ break;
+ }
+ if (!VD)
+ return std::nullopt;
}
- if (!VD)
- return std::nullopt;
// Cost the call + mask.
auto Cost =
thisT()->getCallInstrCost(nullptr, RetTy, ICA.getArgTypes(), CostKind);
- if (VD->isMasked()) {
+
+ if ((VD && VD->isMasked()) ||
+ (IsVectorCall &&
+ RTLIB::RuntimeLibcallsInfo::hasVectorMaskArgument(LibcallImpl))) {
auto VecTy = VectorType::get(IntegerType::getInt1Ty(Ctx), VF);
Cost += thisT()->getShuffleCost(TargetTransformInfo::SK_Broadcast, VecTy,
VecTy, {}, CostKind, 0, nullptr, {});
diff --git a/llvm/include/llvm/CodeGen/MachineBasicBlock.h b/llvm/include/llvm/CodeGen/MachineBasicBlock.h
index 7173927..fcf7bab 100644
--- a/llvm/include/llvm/CodeGen/MachineBasicBlock.h
+++ b/llvm/include/llvm/CodeGen/MachineBasicBlock.h
@@ -129,7 +129,7 @@ public:
MCRegister PhysReg;
LaneBitmask LaneMask;
- RegisterMaskPair(MCPhysReg PhysReg, LaneBitmask LaneMask)
+ RegisterMaskPair(MCRegister PhysReg, LaneBitmask LaneMask)
: PhysReg(PhysReg), LaneMask(LaneMask) {}
bool operator==(const RegisterMaskPair &other) const {
diff --git a/llvm/include/llvm/CodeGen/SelectionDAG.h b/llvm/include/llvm/CodeGen/SelectionDAG.h
index 0dd4f23c..62d2f22 100644
--- a/llvm/include/llvm/CodeGen/SelectionDAG.h
+++ b/llvm/include/llvm/CodeGen/SelectionDAG.h
@@ -1725,9 +1725,17 @@ public:
/// value.
LLVM_ABI bool
expandMultipleResultFPLibCall(RTLIB::Libcall LC, SDNode *Node,
- SmallVectorImpl<SDValue> &Results,
+ SmallVectorImpl<SDValue> &Results, EVT CallType,
std::optional<unsigned> CallRetResNo = {});
+ // FIXME: Ths should be removed, and form using RTLIB::Libcall should be
+ // preferred. Callers should resolve the exact type libcall to use.
+ LLVM_ABI bool
+ expandMultipleResultFPLibCall(StringRef LibcallName, CallingConv::ID CC,
+ SDNode *Node, SmallVectorImpl<SDValue> &Results,
+ std::optional<unsigned> CallRetResNo = {},
+ bool IsVectorMasked = false);
+
/// Expand the specified \c ISD::VAARG node as the Legalize pass would.
LLVM_ABI SDValue expandVAArg(SDNode *Node);
@@ -2072,6 +2080,10 @@ public:
/// We use this predicate to simplify operations downstream.
LLVM_ABI bool SignBitIsZero(SDValue Op, unsigned Depth = 0) const;
+ /// Return true if the sign bit of Op is known to be zero, for a
+ /// floating-point value.
+ LLVM_ABI bool SignBitIsZeroFP(SDValue Op, unsigned Depth = 0) const;
+
/// Return true if 'Op & Mask' is known to be zero. We
/// use this predicate to simplify operations downstream. Op and Mask are
/// known to be the same type.
diff --git a/llvm/include/llvm/CodeGen/TargetInstrInfo.h b/llvm/include/llvm/CodeGen/TargetInstrInfo.h
index 7010cff..02cd925 100644
--- a/llvm/include/llvm/CodeGen/TargetInstrInfo.h
+++ b/llvm/include/llvm/CodeGen/TargetInstrInfo.h
@@ -113,15 +113,18 @@ struct ExtAddrMode {
///
class LLVM_ABI TargetInstrInfo : public MCInstrInfo {
protected:
+ const TargetRegisterInfo &TRI;
+
/// Subtarget specific sub-array of MCInstrInfo's RegClassByHwModeTables
/// (i.e. the table for the active HwMode). This should be indexed by
/// MCOperandInfo's RegClass field for LookupRegClassByHwMode operands.
const int16_t *const RegClassByHwMode;
- TargetInstrInfo(unsigned CFSetupOpcode = ~0u, unsigned CFDestroyOpcode = ~0u,
- unsigned CatchRetOpcode = ~0u, unsigned ReturnOpcode = ~0u,
+ TargetInstrInfo(const TargetRegisterInfo &TRI, unsigned CFSetupOpcode = ~0u,
+ unsigned CFDestroyOpcode = ~0u, unsigned CatchRetOpcode = ~0u,
+ unsigned ReturnOpcode = ~0u,
const int16_t *const RegClassByHwModeTable = nullptr)
- : RegClassByHwMode(RegClassByHwModeTable),
+ : TRI(TRI), RegClassByHwMode(RegClassByHwModeTable),
CallFrameSetupOpcode(CFSetupOpcode),
CallFrameDestroyOpcode(CFDestroyOpcode), CatchRetOpcode(CatchRetOpcode),
ReturnOpcode(ReturnOpcode) {}
@@ -131,6 +134,8 @@ public:
TargetInstrInfo &operator=(const TargetInstrInfo &) = delete;
virtual ~TargetInstrInfo();
+ const TargetRegisterInfo &getRegisterInfo() const { return TRI; }
+
static bool isGenericOpcode(unsigned Opc) {
return Opc <= TargetOpcode::GENERIC_OP_END;
}
diff --git a/llvm/include/llvm/CodeGen/TargetSubtargetInfo.h b/llvm/include/llvm/CodeGen/TargetSubtargetInfo.h
index a8c7a8a..a1a130a 100644
--- a/llvm/include/llvm/CodeGen/TargetSubtargetInfo.h
+++ b/llvm/include/llvm/CodeGen/TargetSubtargetInfo.h
@@ -210,6 +210,10 @@ public:
/// can be overridden.
virtual bool enableJoinGlobalCopies() const;
+ /// Hack to bring up option. This should be unconditionally true, all targets
+ /// should enable it and delete this.
+ virtual bool enableTerminalRule() const { return false; }
+
/// True if the subtarget should run a scheduler after register allocation.
///
/// By default this queries the PostRAScheduling bit in the scheduling model
diff --git a/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h b/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h
index e3e9b2b..f9382fa 100644
--- a/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h
+++ b/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h
@@ -12,7 +12,6 @@
#include "llvm/DebugInfo/DIContext.h"
#include <cstdint>
#include <memory>
-#include <string>
namespace llvm {
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h b/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
index be8cb92..fc01afc 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
@@ -45,7 +45,6 @@
#include <functional>
#include <iterator>
#include <memory>
-#include <optional>
#include <utility>
namespace llvm {
diff --git a/llvm/include/llvm/Frontend/OpenMP/ClauseT.h b/llvm/include/llvm/Frontend/OpenMP/ClauseT.h
index a86dca0..12dfb6c 100644
--- a/llvm/include/llvm/Frontend/OpenMP/ClauseT.h
+++ b/llvm/include/llvm/Frontend/OpenMP/ClauseT.h
@@ -50,7 +50,6 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
-#include <algorithm>
#include <iterator>
#include <optional>
#include <tuple>
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h b/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
index 7bec7e0..1ac9ac0 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h
@@ -190,6 +190,16 @@ enum class OMPScheduleType {
LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue */ ModifierMask)
};
+/// The fallback types for the dyn_groupprivate clause.
+enum class OMPDynGroupprivateFallbackType : uint64_t {
+ /// Abort the execution.
+ Abort = 0,
+ /// Return null pointer.
+ Null = 1,
+ /// Allocate from a implementation defined memory space.
+ DefaultMem = 2
+};
+
// Default OpenMP mapper name suffix.
inline constexpr const char *OmpDefaultMapperName = ".omp.default.mapper";
diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
index b3d7ab4..9f77c24 100644
--- a/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+++ b/llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
@@ -2446,20 +2446,24 @@ public:
/// The number of threads.
ArrayRef<Value *> NumThreads;
/// The size of the dynamic shared memory.
- Value *DynCGGroupMem = nullptr;
+ Value *DynCGroupMem = nullptr;
/// True if the kernel has 'no wait' clause.
bool HasNoWait = false;
+ /// The fallback mechanism for the shared memory.
+ omp::OMPDynGroupprivateFallbackType DynCGroupMemFallback =
+ omp::OMPDynGroupprivateFallbackType::Abort;
// Constructors for TargetKernelArgs.
TargetKernelArgs() = default;
TargetKernelArgs(unsigned NumTargetItems, TargetDataRTArgs RTArgs,
Value *NumIterations, ArrayRef<Value *> NumTeams,
- ArrayRef<Value *> NumThreads, Value *DynCGGroupMem,
- bool HasNoWait)
+ ArrayRef<Value *> NumThreads, Value *DynCGroupMem,
+ bool HasNoWait,
+ omp::OMPDynGroupprivateFallbackType DynCGroupMemFallback)
: NumTargetItems(NumTargetItems), RTArgs(RTArgs),
NumIterations(NumIterations), NumTeams(NumTeams),
- NumThreads(NumThreads), DynCGGroupMem(DynCGGroupMem),
- HasNoWait(HasNoWait) {}
+ NumThreads(NumThreads), DynCGroupMem(DynCGroupMem),
+ HasNoWait(HasNoWait), DynCGroupMemFallback(DynCGroupMemFallback) {}
};
/// Create the kernel args vector used by emitTargetKernel. This function
@@ -3244,6 +3248,10 @@ public:
/// dependency information as passed in the depend clause
/// \param HasNowait Whether the target construct has a `nowait` clause or
/// not.
+ /// \param DynCGroupMem The size of the dynamic groupprivate memory for each
+ /// cgroup.
+ /// \param DynCGroupMem The fallback mechanism to execute if the requested
+ /// cgroup memory cannot be provided.
LLVM_ABI InsertPointOrErrorTy createTarget(
const LocationDescription &Loc, bool IsOffloadEntry,
OpenMPIRBuilder::InsertPointTy AllocaIP,
@@ -3255,7 +3263,10 @@ public:
TargetBodyGenCallbackTy BodyGenCB,
TargetGenArgAccessorsCallbackTy ArgAccessorFuncCB,
CustomMapperCallbackTy CustomMapperCB,
- const SmallVector<DependData> &Dependencies, bool HasNowait = false);
+ const SmallVector<DependData> &Dependencies, bool HasNowait = false,
+ Value *DynCGroupMem = nullptr,
+ omp::OMPDynGroupprivateFallbackType DynCGroupMemFallback =
+ omp::OMPDynGroupprivateFallbackType::Abort);
/// Returns __kmpc_for_static_init_* runtime function for the specified
/// size \a IVSize and sign \a IVSigned. Will create a distribute call
@@ -3654,7 +3665,7 @@ public:
/// \param Name Name of the variable.
LLVM_ABI GlobalVariable *
getOrCreateInternalVariable(Type *Ty, const StringRef &Name,
- unsigned AddressSpace = 0);
+ std::optional<unsigned> AddressSpace = {});
};
/// Class to represented the control flow structure of an OpenMP canonical loop.
diff --git a/llvm/include/llvm/IR/DebugInfo.h b/llvm/include/llvm/IR/DebugInfo.h
index 33e6df0..862293c 100644
--- a/llvm/include/llvm/IR/DebugInfo.h
+++ b/llvm/include/llvm/IR/DebugInfo.h
@@ -108,7 +108,7 @@ public:
LLVM_ABI void processInstruction(const Module &M, const Instruction &I);
/// Process a DILocalVariable.
- LLVM_ABI void processVariable(DILocalVariable *DVI);
+ LLVM_ABI void processVariable(const DILocalVariable *DVI);
/// Process debug info location.
LLVM_ABI void processLocation(const Module &M, const DILocation *Loc);
/// Process a DbgRecord.
@@ -124,7 +124,7 @@ private:
void processCompileUnit(DICompileUnit *CU);
void processScope(DIScope *Scope);
void processType(DIType *DT);
- void processImportedEntity(DIImportedEntity *Import);
+ void processImportedEntity(const DIImportedEntity *Import);
bool addCompileUnit(DICompileUnit *CU);
bool addGlobalVariable(DIGlobalVariableExpression *DIG);
bool addScope(DIScope *Scope);
diff --git a/llvm/include/llvm/IR/DebugInfoMetadata.h b/llvm/include/llvm/IR/DebugInfoMetadata.h
index 7ade6b8..6918b21 100644
--- a/llvm/include/llvm/IR/DebugInfoMetadata.h
+++ b/llvm/include/llvm/IR/DebugInfoMetadata.h
@@ -2554,6 +2554,39 @@ public:
replaceOperandWith(7, N.get());
}
+ /// For the given retained node of DISubprogram, applies one of the
+ /// given functions depending on the type of the node.
+ template <typename T, typename FuncLVT, typename FuncLabelT,
+ typename FuncImportedEntityT, typename FuncUnknownT>
+ static T
+ visitRetainedNode(const Metadata *N, FuncLVT &&FuncLV, FuncLabelT &&FuncLabel,
+ FuncImportedEntityT &&FuncIE, FuncUnknownT &&FuncUnknown) {
+ if (const auto *LV = dyn_cast<DILocalVariable>(N))
+ return FuncLV(LV);
+ if (const auto *L = dyn_cast<DILabel>(N))
+ return FuncLabel(L);
+ if (const auto *IE = dyn_cast<DIImportedEntity>(N))
+ return FuncIE(IE);
+ return FuncUnknown(N);
+ }
+
+ /// Returns the scope of subprogram's retainedNodes.
+ static const DILocalScope *getRetainedNodeScope(const MDNode *N);
+ // For use in Verifier.
+ static const DIScope *getRawRetainedNodeScope(const MDNode *N);
+
+ /// For each retained node, applies one of the given functions depending
+ /// on the type of a node.
+ template <typename FuncLVT, typename FuncLabelT, typename FuncImportedEntityT>
+ void forEachRetainedNode(FuncLVT &&FuncLV, FuncLabelT &&FuncLabel,
+ FuncImportedEntityT &&FuncIE) const {
+ for (MDNode *N : getRetainedNodes())
+ visitRetainedNode<void>(N, FuncLV, FuncLabel, FuncIE,
+ [](const Metadata *N) {
+ llvm_unreachable("Unexpected retained node!");
+ });
+ }
+
/// Check if this subprogram describes the given function.
///
/// FIXME: Should this be looking through bitcasts?
diff --git a/llvm/include/llvm/IR/DiagnosticInfo.h b/llvm/include/llvm/IR/DiagnosticInfo.h
index a426fb0..1c86d18 100644
--- a/llvm/include/llvm/IR/DiagnosticInfo.h
+++ b/llvm/include/llvm/IR/DiagnosticInfo.h
@@ -26,7 +26,6 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/TypeSize.h"
-#include <algorithm>
#include <cstdint>
#include <functional>
#include <iterator>
diff --git a/llvm/include/llvm/IR/Dominators.h b/llvm/include/llvm/IR/Dominators.h
index bf128a3..1209def 100644
--- a/llvm/include/llvm/IR/Dominators.h
+++ b/llvm/include/llvm/IR/Dominators.h
@@ -32,7 +32,6 @@
#include "llvm/Support/CFGUpdate.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/GenericDomTree.h"
-#include <algorithm>
#include <utility>
namespace llvm {
diff --git a/llvm/include/llvm/IR/MemoryModelRelaxationAnnotations.h b/llvm/include/llvm/IR/MemoryModelRelaxationAnnotations.h
index 535635a..fcfb2db 100644
--- a/llvm/include/llvm/IR/MemoryModelRelaxationAnnotations.h
+++ b/llvm/include/llvm/IR/MemoryModelRelaxationAnnotations.h
@@ -21,7 +21,8 @@
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Compiler.h"
-#include <tuple> // for std::pair
+
+#include <utility>
namespace llvm {
diff --git a/llvm/include/llvm/IR/ProfileSummary.h b/llvm/include/llvm/IR/ProfileSummary.h
index 6c087ea..3401215 100644
--- a/llvm/include/llvm/IR/ProfileSummary.h
+++ b/llvm/include/llvm/IR/ProfileSummary.h
@@ -14,7 +14,6 @@
#define LLVM_IR_PROFILESUMMARY_H
#include "llvm/Support/Compiler.h"
-#include <algorithm>
#include <cassert>
#include <cstdint>
#include <vector>
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.h b/llvm/include/llvm/IR/RuntimeLibcalls.h
index c822b65..0afe32a 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.h
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.h
@@ -83,16 +83,7 @@ public:
const Triple &TT,
ExceptionHandling ExceptionModel = ExceptionHandling::None,
FloatABI::ABIType FloatABI = FloatABI::Default,
- EABI EABIVersion = EABI::Default, StringRef ABIName = "") {
- // FIXME: The ExceptionModel parameter is to handle the field in
- // TargetOptions. This interface fails to distinguish the forced disable
- // case for targets which support exceptions by default. This should
- // probably be a module flag and removed from TargetOptions.
- if (ExceptionModel == ExceptionHandling::None)
- ExceptionModel = TT.getDefaultExceptionHandling();
-
- initLibcalls(TT, ExceptionModel, FloatABI, EABIVersion, ABIName);
- }
+ EABI EABIVersion = EABI::Default, StringRef ABIName = "");
explicit RuntimeLibcallsInfo(const Module &M);
@@ -170,6 +161,10 @@ public:
getFunctionTy(LLVMContext &Ctx, const Triple &TT, const DataLayout &DL,
RTLIB::LibcallImpl LibcallImpl) const;
+ /// Returns true if the function has a vector mask argument, which is assumed
+ /// to be the last argument.
+ static bool hasVectorMaskArgument(RTLIB::LibcallImpl Impl);
+
private:
LLVM_ABI static iota_range<RTLIB::LibcallImpl>
lookupLibcallImplNameImpl(StringRef Name);
diff --git a/llvm/include/llvm/IR/RuntimeLibcalls.td b/llvm/include/llvm/IR/RuntimeLibcalls.td
index 24c1b03..ee80606 100644
--- a/llvm/include/llvm/IR/RuntimeLibcalls.td
+++ b/llvm/include/llvm/IR/RuntimeLibcalls.td
@@ -182,6 +182,11 @@ foreach FPTy = ["F32", "F64", "F80", "F128", "PPCF128"] in {
def MODF_#FPTy : RuntimeLibcall;
}
+foreach VecTy = ["V4F32", "V2F64", "NXV4F32", "NXV2F64"] in {
+ def SINCOS_#VecTy : RuntimeLibcall;
+ def SINCOSPI_#VecTy : RuntimeLibcall;
+}
+
def FEGETENV : RuntimeLibcall;
def FESETENV : RuntimeLibcall;
@@ -971,10 +976,6 @@ def frexpf : RuntimeLibcallImpl<FREXP_F32>;
def frexp : RuntimeLibcallImpl<FREXP_F64>;
defm frexpl : LibmLongDoubleLibCall;
-def sincospif : RuntimeLibcallImpl<SINCOSPI_F32>;
-def sincospi : RuntimeLibcallImpl<SINCOSPI_F64>;
-defm sincospil : LibmLongDoubleLibCall;
-
def modff : RuntimeLibcallImpl<MODF_F32>;
def modf : RuntimeLibcallImpl<MODF_F64>;
defm modfl : LibmLongDoubleLibCall;
@@ -1051,6 +1052,15 @@ def sincosf : RuntimeLibcallImpl<SINCOS_F32>;
def sincos : RuntimeLibcallImpl<SINCOS_F64>;
defm sincosl : LibmLongDoubleLibCall;
+// Exists in sun math library
+def sincospif : RuntimeLibcallImpl<SINCOSPI_F32>;
+def sincospi : RuntimeLibcallImpl<SINCOSPI_F64>;
+defm sincospil : LibmLongDoubleLibCall;
+
+// Exists on macOS
+def __sincospif : RuntimeLibcallImpl<SINCOSPI_F32>;
+def __sincospi : RuntimeLibcallImpl<SINCOSPI_F64>;
+
def bzero : RuntimeLibcallImpl<BZERO>;
def __bzero : RuntimeLibcallImpl<BZERO>;
@@ -1079,6 +1089,40 @@ def __security_check_cookie_arm64ec : RuntimeLibcallImpl<SECURITY_CHECK_COOKIE,
"#__security_check_cookie_arm64ec">;
//===----------------------------------------------------------------------===//
+// sleef calls
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> SleefLibcalls = {
+ def _ZGVnN2vl8l8_sincos : RuntimeLibcallImpl<SINCOS_V2F64>;
+ def _ZGVnN4vl4l4_sincosf : RuntimeLibcallImpl<SINCOS_V4F32>;
+ def _ZGVsNxvl8l8_sincos : RuntimeLibcallImpl<SINCOS_NXV2F64>;
+ def _ZGVsNxvl4l4_sincosf : RuntimeLibcallImpl<SINCOS_NXV4F32>;
+
+ def _ZGVnN4vl4l4_sincospif : RuntimeLibcallImpl<SINCOSPI_V4F32>;
+ def _ZGVnN2vl8l8_sincospi : RuntimeLibcallImpl<SINCOSPI_V2F64>;
+ def _ZGVsNxvl4l4_sincospif : RuntimeLibcallImpl<SINCOSPI_NXV4F32>;
+ def _ZGVsNxvl8l8_sincospi : RuntimeLibcallImpl<SINCOSPI_NXV2F64>;
+}
+
+//===----------------------------------------------------------------------===//
+// ARMPL calls
+//===----------------------------------------------------------------------===//
+
+defset list<RuntimeLibcallImpl> ARMPLLibcalls = {
+ def armpl_vsincosq_f64
+ : RuntimeLibcallImpl<SINCOS_V2F64>; // CallingConv::AArch64_VectorCall
+ def armpl_vsincosq_f32
+ : RuntimeLibcallImpl<SINCOS_V4F32>; // CallingConv::AArch64_VectorCall
+ def armpl_svsincos_f64_x : RuntimeLibcallImpl<SINCOS_NXV2F64>;
+ def armpl_svsincos_f32_x : RuntimeLibcallImpl<SINCOS_NXV4F32>;
+
+ def armpl_vsincospiq_f32 : RuntimeLibcallImpl<SINCOSPI_V4F32>;
+ def armpl_vsincospiq_f64 : RuntimeLibcallImpl<SINCOSPI_V2F64>;
+ def armpl_svsincospi_f32_x : RuntimeLibcallImpl<SINCOSPI_NXV4F32>;
+ def armpl_svsincospi_f64_x : RuntimeLibcallImpl<SINCOSPI_NXV2F64>;
+}
+
+//===----------------------------------------------------------------------===//
// F128 libm Runtime Libcalls
//===----------------------------------------------------------------------===//
@@ -1206,7 +1250,9 @@ defvar DefaultLibcallImpls32 = (add DefaultRuntimeLibcallImpls);
defvar DefaultLibcallImpls64 = (add DefaultRuntimeLibcallImpls,
Int128RTLibcalls);
-defvar DarwinSinCosStret = LibcallImpls<(add __sincosf_stret, __sincos_stret),
+// TODO: Guessing sincospi added at same time as sincos_stret
+defvar DarwinSinCosStret = LibcallImpls<(add __sincosf_stret, __sincos_stret,
+ __sincospif, __sincospi),
darwinHasSinCosStret>;
defvar DarwinExp10 = LibcallImpls<(add __exp10f, __exp10), darwinHasExp10>;
@@ -2333,7 +2379,7 @@ defset list<RuntimeLibcallImpl> PPCRuntimeLibcalls = {
defset list<RuntimeLibcallImpl> PPC64AIXCallList = {
def ___memcmp64 : RuntimeLibcallImpl<MEMCMP>;
- def ___memmove64 : RuntimeLibcallImpl<MEMCPY>;
+ def ___memmove64 : RuntimeLibcallImpl<MEMMOVE>;
def ___memset64 : RuntimeLibcallImpl<MEMSET>;
def ___bzero64 : RuntimeLibcallImpl<BZERO>;
def ___strlen64 : RuntimeLibcallImpl<STRLEN>;
diff --git a/llvm/include/llvm/IR/SystemLibraries.h b/llvm/include/llvm/IR/SystemLibraries.h
new file mode 100644
index 0000000..1713b07
--- /dev/null
+++ b/llvm/include/llvm/IR/SystemLibraries.h
@@ -0,0 +1,39 @@
+//===------------------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_IR_SYSTEMLIBRARIES_H
+#define LLVM_IR_SYSTEMLIBRARIES_H
+
+namespace llvm {
+/// List of known vector-functions libraries.
+///
+/// The vector-functions library defines, which functions are vectorizable
+/// and with which factor. The library can be specified by either frontend,
+/// or a commandline option, and then used by
+/// addVectorizableFunctionsFromVecLib for filling up the tables of
+/// vectorizable functions.
+enum class VectorLibrary {
+ NoLibrary, // Don't use any vector library.
+ Accelerate, // Use Accelerate framework.
+ DarwinLibSystemM, // Use Darwin's libsystem_m.
+ LIBMVEC, // GLIBC Vector Math library.
+ MASSV, // IBM MASS vector library.
+ SVML, // Intel short vector math library.
+ SLEEFGNUABI, // SLEEF - SIMD Library for Evaluating Elementary Functions.
+ ArmPL, // Arm Performance Libraries.
+ AMDLIBM // AMD Math Vector library.
+};
+
+/// Command line flag value for the vector math library to use
+///
+/// FIXME: This should come from a module flag, and not be mutually exclusive
+extern VectorLibrary ClVectorLibrary;
+
+} // namespace llvm
+
+#endif // LLVM_IR_SYSTEMLIBRARIES_H
diff --git a/llvm/include/llvm/MC/DXContainerPSVInfo.h b/llvm/include/llvm/MC/DXContainerPSVInfo.h
index 3a2d294..eb6d9e1 100644
--- a/llvm/include/llvm/MC/DXContainerPSVInfo.h
+++ b/llvm/include/llvm/MC/DXContainerPSVInfo.h
@@ -17,7 +17,6 @@
#include "llvm/TargetParser/Triple.h"
#include <array>
-#include <numeric>
#include <stdint.h>
namespace llvm {
diff --git a/llvm/include/llvm/MC/MCAsmInfo.h b/llvm/include/llvm/MC/MCAsmInfo.h
index 7a2e9ad..ea8ac6d 100644
--- a/llvm/include/llvm/MC/MCAsmInfo.h
+++ b/llvm/include/llvm/MC/MCAsmInfo.h
@@ -401,7 +401,7 @@ protected:
// Generated object files can use all ELF features supported by GNU ld of
// this binutils version and later. INT_MAX means all features can be used,
// regardless of GNU ld support. The default value is referenced by
- // clang/Driver/Options.td.
+ // clang/Options/Options.td.
std::pair<int, int> BinutilsVersion = {2, 26};
/// Should we use the integrated assembler?
diff --git a/llvm/include/llvm/MC/MCAssembler.h b/llvm/include/llvm/MC/MCAssembler.h
index 144f211..dbae271 100644
--- a/llvm/include/llvm/MC/MCAssembler.h
+++ b/llvm/include/llvm/MC/MCAssembler.h
@@ -19,13 +19,11 @@
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/SMLoc.h"
-#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <memory>
#include <string>
-#include <tuple>
#include <utility>
namespace llvm {
diff --git a/llvm/include/llvm/Option/Arg.h b/llvm/include/llvm/Option/Arg.h
index b1e56b5..496373d 100644
--- a/llvm/include/llvm/Option/Arg.h
+++ b/llvm/include/llvm/Option/Arg.h
@@ -51,7 +51,7 @@ private:
/// Was this argument used to affect compilation?
///
/// This is used to generate an "argument unused" warning (without
- /// clang::driver::options::TargetSpecific) or "unsupported option" error
+ /// clang::options::TargetSpecific) or "unsupported option" error
/// (with TargetSpecific).
mutable unsigned Claimed : 1;
diff --git a/llvm/include/llvm/Passes/PassBuilder.h b/llvm/include/llvm/Passes/PassBuilder.h
index 8538a8b..8fa21f2 100644
--- a/llvm/include/llvm/Passes/PassBuilder.h
+++ b/llvm/include/llvm/Passes/PassBuilder.h
@@ -742,7 +742,7 @@ private:
void addRequiredLTOPreLinkPasses(ModulePassManager &MPM);
void addVectorPasses(OptimizationLevel Level, FunctionPassManager &FPM,
- bool IsFullLTO);
+ ThinOrFullLTOPhase LTOPhase);
static std::optional<std::vector<PipelineElement>>
parsePipelineText(StringRef Text);
diff --git a/llvm/include/llvm/Remarks/YAMLRemarkSerializer.h b/llvm/include/llvm/Remarks/YAMLRemarkSerializer.h
index 69b8f9f..af9d809 100644
--- a/llvm/include/llvm/Remarks/YAMLRemarkSerializer.h
+++ b/llvm/include/llvm/Remarks/YAMLRemarkSerializer.h
@@ -16,7 +16,6 @@
#include "llvm/Remarks/RemarkSerializer.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/YAMLTraits.h"
-#include <optional>
namespace llvm {
namespace remarks {
diff --git a/llvm/include/llvm/Support/FormatVariadic.h b/llvm/include/llvm/Support/FormatVariadic.h
index 8565292..fdd448f 100644
--- a/llvm/include/llvm/Support/FormatVariadic.h
+++ b/llvm/include/llvm/Support/FormatVariadic.h
@@ -37,7 +37,6 @@
#include "llvm/Support/raw_ostream.h"
#include <array>
#include <cstddef>
-#include <optional>
#include <string>
#include <tuple>
#include <utility>
diff --git a/llvm/include/llvm/Support/Jobserver.h b/llvm/include/llvm/Support/Jobserver.h
index 6bee3b5..3c0c045 100644
--- a/llvm/include/llvm/Support/Jobserver.h
+++ b/llvm/include/llvm/Support/Jobserver.h
@@ -68,7 +68,6 @@
#include "llvm/ADT/StringRef.h"
#include <memory>
-#include <string>
namespace llvm {
diff --git a/llvm/include/llvm/Support/SpecialCaseList.h b/llvm/include/llvm/Support/SpecialCaseList.h
index cb8e568de..dee4db5 100644
--- a/llvm/include/llvm/Support/SpecialCaseList.h
+++ b/llvm/include/llvm/Support/SpecialCaseList.h
@@ -126,15 +126,16 @@ protected:
SpecialCaseList &operator=(SpecialCaseList const &) = delete;
private:
+ using Match = std::pair<StringRef, unsigned>;
+ static constexpr Match NotMatched = {"", 0};
+
// Lagacy v1 matcher.
class RegexMatcher {
public:
LLVM_ABI Error insert(StringRef Pattern, unsigned LineNumber);
LLVM_ABI void preprocess(bool BySize);
- LLVM_ABI void
- match(StringRef Query,
- llvm::function_ref<void(StringRef Rule, unsigned LineNo)> Cb) const;
+ LLVM_ABI Match match(StringRef Query) const;
struct Reg {
Reg(StringRef Name, unsigned LineNo, Regex &&Rg)
@@ -152,9 +153,7 @@ private:
LLVM_ABI Error insert(StringRef Pattern, unsigned LineNumber);
LLVM_ABI void preprocess(bool BySize);
- LLVM_ABI void
- match(StringRef Query,
- llvm::function_ref<void(StringRef Rule, unsigned LineNo)> Cb) const;
+ LLVM_ABI Match match(StringRef Query) const;
struct Glob {
Glob(StringRef Name, unsigned LineNo, GlobPattern &&Pattern)
@@ -168,11 +167,10 @@ private:
RadixTree<iterator_range<StringRef::const_iterator>,
RadixTree<iterator_range<StringRef::const_reverse_iterator>,
- SmallVector<const GlobMatcher::Glob *, 1>>>
+ SmallVector<int, 1>>>
PrefixSuffixToGlob;
- RadixTree<iterator_range<StringRef::const_iterator>,
- SmallVector<const GlobMatcher::Glob *, 1>>
+ RadixTree<iterator_range<StringRef::const_iterator>, SmallVector<int, 1>>
SubstrToGlob;
};
@@ -184,14 +182,10 @@ private:
LLVM_ABI Error insert(StringRef Pattern, unsigned LineNumber);
LLVM_ABI void preprocess(bool BySize);
- LLVM_ABI void
- match(StringRef Query,
- llvm::function_ref<void(StringRef Rule, unsigned LineNo)> Cb) const;
+ LLVM_ABI Match match(StringRef Query) const;
LLVM_ABI bool matchAny(StringRef Query) const {
- bool R = false;
- match(Query, [&](StringRef, unsigned) { R = true; });
- return R;
+ return match(Query) != NotMatched;
}
std::variant<RegexMatcher, GlobMatcher> M;
@@ -201,17 +195,22 @@ private:
using SectionEntries = StringMap<StringMap<Matcher>>;
protected:
- struct Section {
+ class Section {
+ public:
Section(StringRef Str, unsigned FileIdx, bool UseGlobs)
: SectionMatcher(UseGlobs, /*RemoveDotSlash=*/false), SectionStr(Str),
FileIdx(FileIdx) {}
Section(Section &&) = default;
- Matcher SectionMatcher;
- SectionEntries Entries;
- std::string SectionStr;
- unsigned FileIdx;
+ // Return name of the section, its entire string in [].
+ StringRef name() const { return SectionStr; }
+
+ // Returns true if string 'Name' matches section name interpreted as a glob.
+ LLVM_ABI bool matchName(StringRef Name) const;
+
+ // Return sequence number of the file where this section is defined.
+ unsigned fileIndex() const { return FileIdx; }
// Helper method to search by Prefix, Query, and Category. Returns
// 1-based line number on which rule is defined, or 0 if there is no match.
@@ -223,11 +222,19 @@ protected:
LLVM_ABI StringRef getLongestMatch(StringRef Prefix, StringRef Query,
StringRef Category) const;
+ /// Returns true if the section has any entries for the given prefix.
+ LLVM_ABI bool hasPrefix(StringRef Prefix) const;
+
private:
friend class SpecialCaseList;
LLVM_ABI void preprocess(bool OrderBySize);
LLVM_ABI const SpecialCaseList::Matcher *
findMatcher(StringRef Prefix, StringRef Category) const;
+
+ Matcher SectionMatcher;
+ std::string SectionStr;
+ SectionEntries Entries;
+ unsigned FileIdx;
};
ArrayRef<const Section> sections() const { return Sections; }
diff --git a/llvm/include/llvm/Support/TypeSize.h b/llvm/include/llvm/Support/TypeSize.h
index 0a7ae15..421d661 100644
--- a/llvm/include/llvm/Support/TypeSize.h
+++ b/llvm/include/llvm/Support/TypeSize.h
@@ -20,7 +20,6 @@
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
-#include <algorithm>
#include <cassert>
#include <cstdint>
#include <type_traits>
diff --git a/llvm/include/llvm/Support/UnicodeCharRanges.h b/llvm/include/llvm/Support/UnicodeCharRanges.h
index 2b5fc83..03515cd 100644
--- a/llvm/include/llvm/Support/UnicodeCharRanges.h
+++ b/llvm/include/llvm/Support/UnicodeCharRanges.h
@@ -12,7 +12,6 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
-#include <algorithm>
#define DEBUG_TYPE "unicode"
diff --git a/llvm/include/llvm/TableGen/DirectiveEmitter.h b/llvm/include/llvm/TableGen/DirectiveEmitter.h
index ce3e87e..2080f75 100644
--- a/llvm/include/llvm/TableGen/DirectiveEmitter.h
+++ b/llvm/include/llvm/TableGen/DirectiveEmitter.h
@@ -20,7 +20,6 @@
#include "llvm/Frontend/Directive/Spelling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/TableGen/Record.h"
-#include <algorithm>
#include <string>
#include <vector>
diff --git a/llvm/include/llvm/Transforms/Scalar/DropUnnecessaryAssumes.h b/llvm/include/llvm/Transforms/Scalar/DropUnnecessaryAssumes.h
index 4ff442ff..54ddcc0 100644
--- a/llvm/include/llvm/Transforms/Scalar/DropUnnecessaryAssumes.h
+++ b/llvm/include/llvm/Transforms/Scalar/DropUnnecessaryAssumes.h
@@ -19,7 +19,13 @@ namespace llvm {
struct DropUnnecessaryAssumesPass
: public PassInfoMixin<DropUnnecessaryAssumesPass> {
+ DropUnnecessaryAssumesPass(bool DropDereferenceable = false)
+ : DropDereferenceable(DropDereferenceable) {}
+
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+
+private:
+ bool DropDereferenceable;
};
} // end namespace llvm
diff --git a/llvm/include/llvm/Transforms/Scalar/JumpThreading.h b/llvm/include/llvm/Transforms/Scalar/JumpThreading.h
index a03a384..1a19eb9 100644
--- a/llvm/include/llvm/Transforms/Scalar/JumpThreading.h
+++ b/llvm/include/llvm/Transforms/Scalar/JumpThreading.h
@@ -24,7 +24,6 @@
#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Transforms/Utils/ValueMapper.h"
-#include <optional>
#include <utility>
namespace llvm {
diff --git a/llvm/include/llvm/Transforms/Scalar/Scalarizer.h b/llvm/include/llvm/Transforms/Scalar/Scalarizer.h
index 12513c2..35c9adb 100644
--- a/llvm/include/llvm/Transforms/Scalar/Scalarizer.h
+++ b/llvm/include/llvm/Transforms/Scalar/Scalarizer.h
@@ -20,7 +20,6 @@
#include "llvm/IR/PassManager.h"
#include "llvm/Support/Compiler.h"
-#include <optional>
namespace llvm {
diff --git a/llvm/include/llvm/Transforms/Utils/LowerVectorIntrinsics.h b/llvm/include/llvm/Transforms/Utils/LowerVectorIntrinsics.h
index cb48bb0..19b573d 100644
--- a/llvm/include/llvm/Transforms/Utils/LowerVectorIntrinsics.h
+++ b/llvm/include/llvm/Transforms/Utils/LowerVectorIntrinsics.h
@@ -14,7 +14,6 @@
#define LLVM_TRANSFORMS_UTILS_LOWERVECTORINTRINSICS_H
#include <cstdint>
-#include <optional>
namespace llvm {
diff --git a/llvm/include/llvm/Transforms/Utils/SplitModuleByCategory.h b/llvm/include/llvm/Transforms/Utils/SplitModuleByCategory.h
index cfcd161..47aa2ff 100644
--- a/llvm/include/llvm/Transforms/Utils/SplitModuleByCategory.h
+++ b/llvm/include/llvm/Transforms/Utils/SplitModuleByCategory.h
@@ -16,7 +16,6 @@
#include <memory>
#include <optional>
-#include <string>
namespace llvm {
diff --git a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h
index 4385df5..0503966 100644
--- a/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h
+++ b/llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/InstrMaps.h
@@ -19,7 +19,6 @@
#include "llvm/Support/Casting.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h"
-#include <algorithm>
namespace llvm::sandboxir {
diff --git a/llvm/include/llvm/XRay/FDRRecordConsumer.h b/llvm/include/llvm/XRay/FDRRecordConsumer.h
index 13bb711..4ff65f0 100644
--- a/llvm/include/llvm/XRay/FDRRecordConsumer.h
+++ b/llvm/include/llvm/XRay/FDRRecordConsumer.h
@@ -11,7 +11,6 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Error.h"
#include "llvm/XRay/FDRRecords.h"
-#include <algorithm>
#include <memory>
#include <vector>