From a2e4a2fe044c819c9383d5188ccdfe4648fb08cb Mon Sep 17 00:00:00 2001 From: Bryan O'Sullivan Date: Thu, 6 Mar 2008 07:18:30 +0000 Subject: [PATCH] Fix gcc 4.3 build --- llvm-2.2-gcc43.patch | 797 +++++++++++++++++++++++++++++++++++++++++++ llvm.spec | 7 +- 2 files changed, 803 insertions(+), 1 deletion(-) create mode 100644 llvm-2.2-gcc43.patch diff --git a/llvm-2.2-gcc43.patch b/llvm-2.2-gcc43.patch new file mode 100644 index 0000000..9eace99 --- /dev/null +++ b/llvm-2.2-gcc43.patch @@ -0,0 +1,797 @@ +diff -r ba4f1d4ee0d4 include/llvm/ADT/BitVector.h +--- a/include/llvm/ADT/BitVector.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/ADT/BitVector.h Wed Mar 05 23:15:18 2008 -0800 +@@ -16,8 +16,9 @@ + + #include "llvm/Support/MathExtras.h" + #include ++#include + #include +-#include ++#include + + namespace llvm { + +diff -r ba4f1d4ee0d4 include/llvm/ADT/DenseMap.h +--- a/include/llvm/ADT/DenseMap.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/ADT/DenseMap.h Wed Mar 05 23:15:18 2008 -0800 +@@ -313,7 +313,7 @@ + NumEntries = 0; + NumTombstones = 0; + NumBuckets = InitBuckets; +- assert(InitBuckets && (InitBuckets & InitBuckets-1) == 0 && ++ assert(InitBuckets && (InitBuckets & (InitBuckets-1)) == 0 && + "# initial buckets must be a power of two!"); + Buckets = reinterpret_cast(new char[sizeof(BucketT)*InitBuckets]); + // Initialize all the keys to EmptyKey. +diff -r ba4f1d4ee0d4 include/llvm/ADT/ilist +--- a/include/llvm/ADT/ilist Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/ADT/ilist Wed Mar 05 23:15:18 2008 -0800 +@@ -40,6 +40,7 @@ + + #include "llvm/ADT/iterator" + #include ++#include + + namespace llvm { + +diff -r ba4f1d4ee0d4 include/llvm/Analysis/LoopInfo.h +--- a/include/llvm/Analysis/LoopInfo.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/Analysis/LoopInfo.h Wed Mar 05 23:15:18 2008 -0800 +@@ -397,13 +397,14 @@ + if (BranchInst *BI = dyn_cast(BackedgeBlock->getTerminator())) + if (BI->isConditional()) { + if (ICmpInst *ICI = dyn_cast(BI->getCondition())) { +- if (ICI->getOperand(0) == Inc) ++ if (ICI->getOperand(0) == Inc) { + if (BI->getSuccessor(0) == getHeader()) { + if (ICI->getPredicate() == ICmpInst::ICMP_NE) + return ICI->getOperand(1); + } else if (ICI->getPredicate() == ICmpInst::ICMP_EQ) { + return ICI->getOperand(1); + } ++ } + } + } + +diff -r ba4f1d4ee0d4 include/llvm/Analysis/ScalarEvolutionExpressions.h +--- a/include/llvm/Analysis/ScalarEvolutionExpressions.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/Analysis/ScalarEvolutionExpressions.h Wed Mar 05 23:15:18 2008 -0800 +@@ -252,11 +252,12 @@ + virtual bool hasComputableLoopEvolution(const Loop *L) const { + bool HasVarying = false; + for (unsigned i = 0, e = getNumOperands(); i != e; ++i) +- if (!getOperand(i)->isLoopInvariant(L)) ++ if (!getOperand(i)->isLoopInvariant(L)) { + if (getOperand(i)->hasComputableLoopEvolution(L)) + HasVarying = true; + else + return false; ++ } + return HasVarying; + } + +diff -r ba4f1d4ee0d4 include/llvm/CodeGen/MachineRegisterInfo.h +--- a/include/llvm/CodeGen/MachineRegisterInfo.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/CodeGen/MachineRegisterInfo.h Wed Mar 05 23:15:18 2008 -0800 +@@ -207,8 +207,8 @@ + // If the first node isn't one we're interested in, advance to one that + // we are interested in. + if (op) { +- if (!ReturnUses && op->isUse() || +- !ReturnDefs && op->isDef()) ++ if ((!ReturnUses && op->isUse()) || ++ (!ReturnDefs && op->isDef())) + ++*this; + } + } +@@ -236,8 +236,8 @@ + Op = Op->getNextOperandForReg(); + + // If this is an operand we don't care about, skip it. +- while (Op && (!ReturnUses && Op->isUse() || +- !ReturnDefs && Op->isDef())) ++ while (Op && ((!ReturnUses && Op->isUse()) || ++ (!ReturnDefs && Op->isDef()))) + Op = Op->getNextOperandForReg(); + + return *this; +diff -r ba4f1d4ee0d4 include/llvm/CodeGen/SelectionDAGNodes.h +--- a/include/llvm/CodeGen/SelectionDAGNodes.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/CodeGen/SelectionDAGNodes.h Wed Mar 05 23:15:18 2008 -0800 +@@ -802,8 +802,8 @@ + static inline SDOperand getEmptyKey() { return SDOperand((SDNode*)-1, -1U); } + static inline SDOperand getTombstoneKey() { return SDOperand((SDNode*)-1, 0);} + static unsigned getHashValue(const SDOperand &Val) { +- return (unsigned)((uintptr_t)Val.Val >> 4) ^ +- (unsigned)((uintptr_t)Val.Val >> 9) + Val.ResNo; ++ return ((unsigned)((uintptr_t)Val.Val >> 4) ^ ++ (unsigned)((uintptr_t)Val.Val >> 9)) + Val.ResNo; + } + static bool isEqual(const SDOperand &LHS, const SDOperand &RHS) { + return LHS == RHS; +diff -r ba4f1d4ee0d4 include/llvm/LinkTimeOptimizer.h +--- a/include/llvm/LinkTimeOptimizer.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/LinkTimeOptimizer.h Wed Mar 05 23:15:18 2008 -0800 +@@ -16,6 +16,7 @@ + #define __LTO_H__ + + #include ++#include + #include + #include + #include +diff -r ba4f1d4ee0d4 include/llvm/Support/Streams.h +--- a/include/llvm/Support/Streams.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/Support/Streams.h Wed Mar 05 23:15:18 2008 -0800 +@@ -16,6 +16,7 @@ + #define LLVM_SUPPORT_STREAMS_H + + #include ++#include + + namespace llvm { + +diff -r ba4f1d4ee0d4 include/llvm/Target/SubtargetFeature.h +--- a/include/llvm/Target/SubtargetFeature.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/Target/SubtargetFeature.h Wed Mar 05 23:15:18 2008 -0800 +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include "llvm/Support/DataTypes.h" + + namespace llvm { +diff -r ba4f1d4ee0d4 include/llvm/Target/TargetJITInfo.h +--- a/include/llvm/Target/TargetJITInfo.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/include/llvm/Target/TargetJITInfo.h Wed Mar 05 23:15:18 2008 -0800 +@@ -17,8 +17,9 @@ + #ifndef LLVM_TARGET_TARGETJITINFO_H + #define LLVM_TARGET_TARGETJITINFO_H + ++#include + #include +-#include ++#include "llvm/Support/DataTypes.h" + + namespace llvm { + class Function; +diff -r ba4f1d4ee0d4 lib/Analysis/Analysis.cpp +--- a/lib/Analysis/Analysis.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Analysis/Analysis.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -10,6 +10,7 @@ + #include "llvm-c/Analysis.h" + #include "llvm/Analysis/Verifier.h" + #include ++#include + + using namespace llvm; + +diff -r ba4f1d4ee0d4 lib/Analysis/IPA/Andersens.cpp +--- a/lib/Analysis/IPA/Andersens.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Analysis/IPA/Andersens.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -139,7 +139,7 @@ + + Constraint(ConstraintType Ty, unsigned D, unsigned S, unsigned O = 0) + : Type(Ty), Dest(D), Src(S), Offset(O) { +- assert(Offset == 0 || Ty != AddressOf && ++ assert((Offset == 0 || Ty != AddressOf) && + "Offset is illegal on addressof constraints"); + } + +@@ -1931,7 +1931,7 @@ + + C.Src = FindEquivalentNode(RHSNode, RHSLabel); + C.Dest = FindEquivalentNode(FindNode(LHSNode), LHSLabel); +- if (C.Src == C.Dest && C.Type == Constraint::Copy ++ if ((C.Src == C.Dest && C.Type == Constraint::Copy) + || Seen.count(C)) + continue; + +diff -r ba4f1d4ee0d4 lib/Analysis/IPA/GlobalsModRef.cpp +--- a/lib/Analysis/IPA/GlobalsModRef.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Analysis/IPA/GlobalsModRef.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -115,11 +115,12 @@ + /// case the most generic behavior of this function should be returned. + virtual ModRefBehavior getModRefBehavior(Function *F, CallSite CS, + std::vector *Info) { +- if (FunctionRecord *FR = getFunctionInfo(F)) ++ if (FunctionRecord *FR = getFunctionInfo(F)) { + if (FR->FunctionEffect == 0) + return DoesNotAccessMemory; + else if ((FR->FunctionEffect & Mod) == 0) + return OnlyReadsMemory; ++ } + return AliasAnalysis::getModRefBehavior(F, CS, Info); + } + +diff -r ba4f1d4ee0d4 lib/Analysis/ScalarEvolution.cpp +--- a/lib/Analysis/ScalarEvolution.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Analysis/ScalarEvolution.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -1994,13 +1994,14 @@ + Instruction *I = dyn_cast(V); + if (I == 0 || !L->contains(I->getParent())) return 0; + +- if (PHINode *PN = dyn_cast(I)) ++ if (PHINode *PN = dyn_cast(I)) { + if (L->getHeader() == I->getParent()) + return PN; + else + // We don't currently keep track of the control flow needed to evaluate + // PHIs, so we cannot handle PHIs inside of loops. + return 0; ++ } + + // If we won't be able to constant fold this expression even if the operands + // are constants, return early. +diff -r ba4f1d4ee0d4 lib/Archive/Archive.cpp +--- a/lib/Archive/Archive.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Archive/Archive.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -18,6 +18,8 @@ + #include "llvm/Module.h" + #include "llvm/Support/MemoryBuffer.h" + #include "llvm/System/Process.h" ++#include ++#include + using namespace llvm; + + // getMemberSize - compute the actual physical size of the file member as seen +diff -r ba4f1d4ee0d4 lib/Archive/ArchiveInternals.h +--- a/lib/Archive/ArchiveInternals.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Archive/ArchiveInternals.h Wed Mar 05 23:15:18 2008 -0800 +@@ -17,6 +17,8 @@ + #include "llvm/Bitcode/Archive.h" + #include "llvm/System/TimeValue.h" + #include "llvm/ADT/StringExtras.h" ++ ++#include + + #define ARFILE_MAGIC "!\n" ///< magic string + #define ARFILE_MAGIC_LEN (sizeof(ARFILE_MAGIC)-1) ///< length of magic string +diff -r ba4f1d4ee0d4 lib/AsmParser/LLLexer.cpp +--- a/lib/AsmParser/LLLexer.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/AsmParser/LLLexer.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -18,6 +18,8 @@ + + #include + #include "llvmAsmParser.h" ++ ++#include + using namespace llvm; + + //===----------------------------------------------------------------------===// +diff -r ba4f1d4ee0d4 lib/AsmParser/Parser.cpp +--- a/lib/AsmParser/Parser.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/AsmParser/Parser.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -14,6 +14,7 @@ + #include "ParserInternals.h" + #include "llvm/Module.h" + #include "llvm/Support/MemoryBuffer.h" ++#include + using namespace llvm; + + +diff -r ba4f1d4ee0d4 lib/Bitcode/Reader/BitReader.cpp +--- a/lib/Bitcode/Reader/BitReader.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Bitcode/Reader/BitReader.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -11,6 +11,7 @@ + #include "llvm/Bitcode/ReaderWriter.h" + #include "llvm/Support/MemoryBuffer.h" + #include ++#include + + using namespace llvm; + +diff -r ba4f1d4ee0d4 lib/CodeGen/MachOWriter.cpp +--- a/lib/CodeGen/MachOWriter.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/CodeGen/MachOWriter.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -38,6 +38,7 @@ + #include "llvm/Support/OutputBuffer.h" + #include "llvm/Support/Streams.h" + #include ++#include + using namespace llvm; + + /// AddMachOWriter - Concrete function to add the Mach-O writer to the function +diff -r ba4f1d4ee0d4 lib/ExecutionEngine/ExecutionEngine.cpp +--- a/lib/ExecutionEngine/ExecutionEngine.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/ExecutionEngine/ExecutionEngine.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -26,7 +26,8 @@ + #include "llvm/System/DynamicLibrary.h" + #include "llvm/System/Host.h" + #include "llvm/Target/TargetData.h" +-#include ++#include ++#include + using namespace llvm; + + STATISTIC(NumInitBytes, "Number of bytes of global vars initialized"); +diff -r ba4f1d4ee0d4 lib/ExecutionEngine/ExecutionEngineBindings.cpp +--- a/lib/ExecutionEngine/ExecutionEngineBindings.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/ExecutionEngine/ExecutionEngineBindings.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -15,6 +15,7 @@ + #include "llvm-c/ExecutionEngine.h" + #include "llvm/ExecutionEngine/GenericValue.h" + #include "llvm/ExecutionEngine/ExecutionEngine.h" ++#include + + using namespace llvm; + +diff -r ba4f1d4ee0d4 lib/ExecutionEngine/Interpreter/Execution.cpp +--- a/lib/ExecutionEngine/Interpreter/Execution.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/ExecutionEngine/Interpreter/Execution.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -23,8 +23,9 @@ + #include "llvm/ADT/Statistic.h" + #include "llvm/Support/Debug.h" + #include "llvm/Support/MathExtras.h" ++#include + #include +-#include ++#include + using namespace llvm; + + STATISTIC(NumDynamicInsts, "Number of dynamic instructions executed"); +diff -r ba4f1d4ee0d4 lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp +--- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + #ifdef __linux__ + #include +diff -r ba4f1d4ee0d4 lib/ExecutionEngine/Interpreter/Interpreter.cpp +--- a/lib/ExecutionEngine/Interpreter/Interpreter.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/ExecutionEngine/Interpreter/Interpreter.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -18,6 +18,7 @@ + #include "llvm/DerivedTypes.h" + #include "llvm/Module.h" + #include "llvm/ModuleProvider.h" ++#include + using namespace llvm; + + static struct RegisterInterp { +diff -r ba4f1d4ee0d4 lib/ExecutionEngine/JIT/JITMemoryManager.cpp +--- a/lib/ExecutionEngine/JIT/JITMemoryManager.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/ExecutionEngine/JIT/JITMemoryManager.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -17,6 +17,8 @@ + #include + #include + #include ++#include ++#include + using namespace llvm; + + +diff -r ba4f1d4ee0d4 lib/Support/CommandLine.cpp +--- a/lib/Support/CommandLine.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Support/CommandLine.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + using namespace llvm; + using namespace cl; + +diff -r ba4f1d4ee0d4 lib/Support/FileUtilities.cpp +--- a/lib/Support/FileUtilities.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Support/FileUtilities.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -16,6 +16,7 @@ + #include "llvm/System/Path.h" + #include "llvm/System/MappedFile.h" + #include "llvm/ADT/StringExtras.h" ++#include + #include + #include + using namespace llvm; +diff -r ba4f1d4ee0d4 lib/Support/FoldingSet.cpp +--- a/lib/Support/FoldingSet.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Support/FoldingSet.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -18,6 +18,7 @@ + #include "llvm/ADT/APFloat.h" + #include "llvm/Support/MathExtras.h" + #include ++#include + using namespace llvm; + + //===----------------------------------------------------------------------===// +diff -r ba4f1d4ee0d4 lib/Support/Statistic.cpp +--- a/lib/Support/Statistic.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Support/Statistic.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -28,6 +28,7 @@ + #include "llvm/ADT/StringExtras.h" + #include + #include ++#include + using namespace llvm; + + // GetLibSupportInfoOutputFile - Return a file stream to print our output on. +diff -r ba4f1d4ee0d4 lib/Support/StringExtras.cpp +--- a/lib/Support/StringExtras.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Support/StringExtras.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -12,6 +12,7 @@ + //===----------------------------------------------------------------------===// + + #include "llvm/ADT/StringExtras.h" ++#include + using namespace llvm; + + /// getToken - This function extracts one token from source, ignoring any +diff -r ba4f1d4ee0d4 lib/Target/Sparc/SparcAsmPrinter.cpp +--- a/lib/Target/Sparc/SparcAsmPrinter.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Target/Sparc/SparcAsmPrinter.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -31,6 +31,7 @@ + #include "llvm/Support/CommandLine.h" + #include "llvm/Support/MathExtras.h" + #include ++#include + using namespace llvm; + + STATISTIC(EmittedInsts, "Number of machine instrs printed"); +diff -r ba4f1d4ee0d4 lib/Target/X86/X86JITInfo.cpp +--- a/lib/Target/X86/X86JITInfo.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Target/X86/X86JITInfo.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -18,6 +18,7 @@ + #include "llvm/CodeGen/MachineCodeEmitter.h" + #include "llvm/Config/alloca.h" + #include ++#include + using namespace llvm; + + #ifdef _MSC_VER +diff -r ba4f1d4ee0d4 lib/Transforms/IPO/SimplifyLibCalls.cpp +--- a/lib/Transforms/IPO/SimplifyLibCalls.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Transforms/IPO/SimplifyLibCalls.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -30,6 +30,7 @@ + #include "llvm/Support/Debug.h" + #include "llvm/Target/TargetData.h" + #include "llvm/Transforms/IPO.h" ++#include + using namespace llvm; + + /// This statistic keeps track of the total number of library calls that have +diff -r ba4f1d4ee0d4 lib/Transforms/Scalar/LoopUnroll.cpp +--- a/lib/Transforms/Scalar/LoopUnroll.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/Transforms/Scalar/LoopUnroll.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -36,8 +36,9 @@ + #include "llvm/ADT/STLExtras.h" + #include "llvm/ADT/SmallPtrSet.h" + #include "llvm/IntrinsicInst.h" ++#include ++#include + #include +-#include + using namespace llvm; + + STATISTIC(NumCompletelyUnrolled, "Number of loops completely unrolled"); +diff -r ba4f1d4ee0d4 lib/VMCore/AutoUpgrade.cpp +--- a/lib/VMCore/AutoUpgrade.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/VMCore/AutoUpgrade.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -18,6 +18,7 @@ + #include "llvm/Instructions.h" + #include "llvm/ParameterAttributes.h" + #include "llvm/Intrinsics.h" ++#include + using namespace llvm; + + +diff -r ba4f1d4ee0d4 lib/VMCore/ConstantFold.cpp +--- a/lib/VMCore/ConstantFold.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/VMCore/ConstantFold.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -658,25 +658,28 @@ + case Instruction::Xor: + return ConstantInt::get(C1V ^ C2V); + case Instruction::Shl: +- if (uint32_t shiftAmt = C2V.getZExtValue()) ++ if (uint32_t shiftAmt = C2V.getZExtValue()) { + if (shiftAmt < C1V.getBitWidth()) + return ConstantInt::get(C1V.shl(shiftAmt)); + else + return UndefValue::get(C1->getType()); // too big shift is undef ++ } + return const_cast(CI1); // Zero shift is identity + case Instruction::LShr: +- if (uint32_t shiftAmt = C2V.getZExtValue()) ++ if (uint32_t shiftAmt = C2V.getZExtValue()) { + if (shiftAmt < C1V.getBitWidth()) + return ConstantInt::get(C1V.lshr(shiftAmt)); + else + return UndefValue::get(C1->getType()); // too big shift is undef ++ } + return const_cast(CI1); // Zero shift is identity + case Instruction::AShr: +- if (uint32_t shiftAmt = C2V.getZExtValue()) ++ if (uint32_t shiftAmt = C2V.getZExtValue()) { + if (shiftAmt < C1V.getBitWidth()) + return ConstantInt::get(C1V.ashr(shiftAmt)); + else + return UndefValue::get(C1->getType()); // too big shift is undef ++ } + return const_cast(CI1); // Zero shift is identity + } + } +@@ -1081,18 +1084,20 @@ + // Ok, we ran out of things they have in common. If any leftovers + // are non-zero then we have a difference, otherwise we are equal. + for (; i < CE1->getNumOperands(); ++i) +- if (!CE1->getOperand(i)->isNullValue()) ++ if (!CE1->getOperand(i)->isNullValue()) { + if (isa(CE1->getOperand(i))) + return isSigned ? ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT; + else + return ICmpInst::BAD_ICMP_PREDICATE; // Might be equal. ++ } + + for (; i < CE2->getNumOperands(); ++i) +- if (!CE2->getOperand(i)->isNullValue()) ++ if (!CE2->getOperand(i)->isNullValue()) { + if (isa(CE2->getOperand(i))) + return isSigned ? ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT; + else + return ICmpInst::BAD_ICMP_PREDICATE; // Might be equal. ++ } + return ICmpInst::ICMP_EQ; + } + } +@@ -1121,20 +1126,22 @@ + if (C1->isNullValue()) { + if (const GlobalValue *GV = dyn_cast(C2)) + // Don't try to evaluate aliases. External weak GV can be null. +- if (!isa(GV) && !GV->hasExternalWeakLinkage()) ++ if (!isa(GV) && !GV->hasExternalWeakLinkage()) { + if (pred == ICmpInst::ICMP_EQ) + return ConstantInt::getFalse(); + else if (pred == ICmpInst::ICMP_NE) + return ConstantInt::getTrue(); ++ } + // icmp eq/ne(GV,null) -> false/true + } else if (C2->isNullValue()) { + if (const GlobalValue *GV = dyn_cast(C1)) + // Don't try to evaluate aliases. External weak GV can be null. +- if (!isa(GV) && !GV->hasExternalWeakLinkage()) ++ if (!isa(GV) && !GV->hasExternalWeakLinkage()) { + if (pred == ICmpInst::ICMP_EQ) + return ConstantInt::getFalse(); + else if (pred == ICmpInst::ICMP_NE) + return ConstantInt::getTrue(); ++ } + } + + if (isa(C1) && isa(C2)) { +diff -r ba4f1d4ee0d4 lib/VMCore/Core.cpp +--- a/lib/VMCore/Core.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/VMCore/Core.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -22,6 +22,7 @@ + #include "llvm/Support/MemoryBuffer.h" + #include + #include ++#include + + using namespace llvm; + +diff -r ba4f1d4ee0d4 lib/VMCore/Instructions.cpp +--- a/lib/VMCore/Instructions.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/VMCore/Instructions.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -182,11 +182,12 @@ + /// + Value *PHINode::hasConstantValue(bool AllowNonDominatingInstruction) const { + // If the PHI node only has one incoming value, eliminate the PHI node... +- if (getNumIncomingValues() == 1) ++ if (getNumIncomingValues() == 1) { + if (getIncomingValue(0) != this) // not X = phi X + return getIncomingValue(0); + else + return UndefValue::get(getType()); // Self cycle is dead. ++ } + + // Otherwise if all of the incoming values are the same for the PHI, replace + // the PHI node with the incoming value. +@@ -194,13 +195,14 @@ + Value *InVal = 0; + bool HasUndefInput = false; + for (unsigned i = 0, e = getNumIncomingValues(); i != e; ++i) +- if (isa(getIncomingValue(i))) ++ if (isa(getIncomingValue(i))) { + HasUndefInput = true; +- else if (getIncomingValue(i) != this) // Not the PHI node itself... ++ } else if (getIncomingValue(i) != this) { // Not the PHI node itself... + if (InVal && getIncomingValue(i) != InVal) + return 0; // Not the same, bail out. + else + InVal = getIncomingValue(i); ++ } + + // The only case that could cause InVal to be null is if we have a PHI node + // that only has entries for itself. In this case, there is no entry into the +@@ -441,8 +443,8 @@ + cast(cast(Fn->getType())->getElementType()); + FTy = FTy; // silence warning. + +- assert((NumArgs == FTy->getNumParams()) || +- (FTy->isVarArg() && NumArgs > FTy->getNumParams()) && ++ assert(((NumArgs == FTy->getNumParams()) || ++ (FTy->isVarArg() && NumArgs > FTy->getNumParams())) && + "Calling a function with bad signature"); + + for (unsigned i = 0, e = NumArgs; i != e; i++) { +@@ -1027,12 +1029,13 @@ + if (!isa(Ptr)) return 0; // Type isn't a pointer type! + + // Handle the special case of the empty set index set... +- if (NumIdx == 0) ++ if (NumIdx == 0) { + if (AllowCompositeLeaf || + cast(Ptr)->getElementType()->isFirstClassType()) + return cast(Ptr)->getElementType(); + else + return 0; ++ } + + unsigned CurIdx = 0; + while (const CompositeType *CT = dyn_cast(Ptr)) { +@@ -2319,7 +2322,7 @@ + assert(Op0Ty == Op1Ty && + "Both operands to ICmp instruction are not of the same type!"); + // Check that the operands are the right type +- assert(Op0Ty->isInteger() || isa(Op0Ty) && ++ assert((Op0Ty->isInteger() || isa(Op0Ty)) && + "Invalid operand types for ICmp instruction"); + return; + } +diff -r ba4f1d4ee0d4 lib/VMCore/Value.cpp +--- a/lib/VMCore/Value.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/lib/VMCore/Value.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -307,7 +307,7 @@ + void User::replaceUsesOfWith(Value *From, Value *To) { + if (From == To) return; // Duh what? + +- assert(!isa(this) || isa(this) && ++ assert((!isa(this) || isa(this)) && + "Cannot call User::replaceUsesofWith on a constant!"); + + for (unsigned i = 0, E = getNumOperands(); i != E; ++i) +diff -r ba4f1d4ee0d4 tools/llvm-db/Commands.cpp +--- a/tools/llvm-db/Commands.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/tools/llvm-db/Commands.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -21,6 +21,7 @@ + #include "llvm/Support/FileUtilities.h" + #include "llvm/ADT/StringExtras.h" + #include ++#include + using namespace llvm; + + /// getCurrentLanguage - Return the current source language that the user is +diff -r ba4f1d4ee0d4 tools/llvm-ld/llvm-ld.cpp +--- a/tools/llvm-ld/llvm-ld.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/tools/llvm-ld/llvm-ld.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -38,6 +38,7 @@ + #include "llvm/System/Signals.h" + #include + #include ++#include + using namespace llvm; + + // Input/Output Options +diff -r ba4f1d4ee0d4 tools/llvm-upgrade/UpgradeInternals.h +--- a/tools/llvm-upgrade/UpgradeInternals.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/tools/llvm-upgrade/UpgradeInternals.h Wed Mar 05 23:15:18 2008 -0800 +@@ -22,7 +22,7 @@ + #include "llvm/ADT/StringExtras.h" + #include + #include +- ++#include + + // Global variables exported from the lexer. + extern int yydebug; +diff -r ba4f1d4ee0d4 tools/llvmc/llvmc.cpp +--- a/tools/llvmc/llvmc.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/tools/llvmc/llvmc.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -21,6 +21,7 @@ + #include "llvm/Support/ManagedStatic.h" + #include "llvm/System/Signals.h" + #include ++#include + using namespace llvm; + + //===----------------------------------------------------------------------===// +diff -r ba4f1d4ee0d4 utils/PerfectShuffle/PerfectShuffle.cpp +--- a/utils/PerfectShuffle/PerfectShuffle.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/utils/PerfectShuffle/PerfectShuffle.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -17,7 +17,7 @@ + #include + #include + #include +- ++#include + struct Operator; + + // Masks are 4-nibble hex numbers. Values 0-7 in any nibble means that it takes +diff -r ba4f1d4ee0d4 utils/TableGen/AsmWriterEmitter.cpp +--- a/utils/TableGen/AsmWriterEmitter.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/utils/TableGen/AsmWriterEmitter.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -242,11 +242,12 @@ + + unsigned MismatchOperand = ~0U; + for (unsigned i = 0, e = Operands.size(); i != e; ++i) { +- if (Operands[i] != Other.Operands[i]) ++ if (Operands[i] != Other.Operands[i]) { + if (MismatchOperand != ~0U) // Already have one mismatch? + return ~1U; + else + MismatchOperand = i; ++ } + } + return MismatchOperand; + } +diff -r ba4f1d4ee0d4 utils/TableGen/CodeGenDAGPatterns.cpp +--- a/utils/TableGen/CodeGenDAGPatterns.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/utils/TableGen/CodeGenDAGPatterns.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -1318,14 +1318,14 @@ + while (TPN->ApplyTypeConstraints(P, false)) + /* Resolve all types */; + +- if (TPN->ContainsUnresolvedType()) ++ if (TPN->ContainsUnresolvedType()) { + if (iter == 0) + throw "Value #" + utostr(i) + " of PredicateOperand '" + + DefaultOps[iter][i]->getName() + "' doesn't have a concrete type!"; + else + throw "Value #" + utostr(i) + " of OptionalDefOperand '" + + DefaultOps[iter][i]->getName() + "' doesn't have a concrete type!"; +- ++ } + DefaultOpInfo.DefaultOps.push_back(TPN); + } + +diff -r ba4f1d4ee0d4 utils/TableGen/CodeGenRegisters.h +--- a/utils/TableGen/CodeGenRegisters.h Wed Mar 05 22:42:42 2008 -0800 ++++ b/utils/TableGen/CodeGenRegisters.h Wed Mar 05 23:15:18 2008 -0800 +@@ -15,9 +15,10 @@ + #ifndef CODEGEN_REGISTERS_H + #define CODEGEN_REGISTERS_H + ++#include "llvm/CodeGen/ValueTypes.h" + #include + #include +-#include "llvm/CodeGen/ValueTypes.h" ++#include + + namespace llvm { + class Record; +diff -r ba4f1d4ee0d4 utils/TableGen/DAGISelEmitter.cpp +--- a/utils/TableGen/DAGISelEmitter.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/utils/TableGen/DAGISelEmitter.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -1059,7 +1059,7 @@ + Code += "), 0"; + emitCode(Code2 + Code + ");"); + +- if (NodeHasChain) ++ if (NodeHasChain) { + // Remember which op produces the chain. + if (!isRoot) + emitCode(ChainName + " = SDOperand(" + NodeName + +@@ -1067,6 +1067,7 @@ + else + emitCode(ChainName + " = SDOperand(" + NodeName + + ", " + utostr(NumResults+NumDstRegs) + ");"); ++ } + + if (!isRoot) { + NodeOps.push_back("Tmp" + utostr(ResNo)); +diff -r ba4f1d4ee0d4 utils/TableGen/TGLexer.cpp +--- a/utils/TableGen/TGLexer.cpp Wed Mar 05 22:42:42 2008 -0800 ++++ b/utils/TableGen/TGLexer.cpp Wed Mar 05 23:15:18 2008 -0800 +@@ -17,6 +17,8 @@ + #include + #include "llvm/Config/config.h" + #include ++#include ++#include + using namespace llvm; + + TGLexer::TGLexer(MemoryBuffer *StartBuf) : CurLineNo(1), CurBuf(StartBuf) { diff --git a/llvm.spec b/llvm.spec index 14339a5..8edd146 100644 --- a/llvm.spec +++ b/llvm.spec @@ -14,7 +14,7 @@ Name: llvm Version: 2.2 -Release: 2%{?dist} +Release: 3%{?dist} Summary: The Low Level Virtual Machine License: NCSA Group: Development/Languages @@ -25,6 +25,7 @@ Source1: http://llvm.org/releases/%{version}/llvm-gcc%{lgcc_version}-%{version}. %endif Patch0: llvm-2.1-fix-sed.patch +Patch1: llvm-2.2-gcc43.patch BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) BuildRequires: bison @@ -113,6 +114,7 @@ API documentation for the LLVM compiler infrastructure. %setup -q -n llvm-%{version} %{?_with_gcc:-a1} %patch0 -p1 -b .fix-sed +%patch1 -p1 -b .gcc43 %build # We're not building a debuginfo package yet, because some generated @@ -287,6 +289,9 @@ rm -rf %{buildroot} %changelog +* Wed Mar 5 2008 Bryan O'Sullivan - 2.2-3 +- Fix compilation problems with gcc 4.3 + * Mon Feb 18 2008 Fedora Release Engineering - 2.2-2 - Autorebuild for GCC 4.3