svn commit: r234982 - in head: contrib/llvm/include/llvm
contrib/llvm/include/llvm-c contrib/llvm/include/llvm/ADT
contrib/llvm/include/llvm/CodeGen
contrib/llvm/include/llvm/MC/MCParser contrib/ll...
Dimitry Andric
dim at FreeBSD.org
Thu May 3 20:41:22 UTC 2012
Author: dim
Date: Thu May 3 20:41:21 2012
New Revision: 234982
URL: http://svn.freebsd.org/changeset/base/234982
Log:
Upgrade our copy of llvm/clang to r155985, from upstream's release_31
branch. This brings us very close to the 3.1 release, which is planned
for May 14th.
MFC after: 2 weeks
Added:
head/contrib/llvm/include/llvm/Support/Locale.h
- copied unchanged from r234974, vendor/llvm/dist/include/llvm/Support/Locale.h
head/contrib/llvm/include/llvm/Support/MDBuilder.h
- copied unchanged from r234974, vendor/llvm/dist/include/llvm/Support/MDBuilder.h
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp
- copied unchanged from r234974, vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h
- copied unchanged from r234974, vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/ObjectImage.h
- copied unchanged from r234974, vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/ObjectImage.h
head/contrib/llvm/lib/Support/Locale.cpp
- copied unchanged from r234974, vendor/llvm/dist/lib/Support/Locale.cpp
head/contrib/llvm/lib/Support/LocaleGeneric.inc
- copied unchanged from r234974, vendor/llvm/dist/lib/Support/LocaleGeneric.inc
head/contrib/llvm/lib/Support/LocaleWindows.inc
- copied unchanged from r234974, vendor/llvm/dist/lib/Support/LocaleWindows.inc
head/contrib/llvm/lib/Support/LocaleXlocale.inc
- copied unchanged from r234974, vendor/llvm/dist/lib/Support/LocaleXlocale.inc
head/contrib/llvm/lib/Target/Mips/Disassembler/
- copied from r234974, vendor/llvm/dist/lib/Target/Mips/Disassembler/
head/contrib/llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp
- copied unchanged from r234977, vendor/clang/dist/lib/Sema/SemaStmtAttr.cpp
Deleted:
head/contrib/llvm/include/llvm/Support/JSONParser.h
head/contrib/llvm/lib/Support/JSONParser.cpp
head/contrib/llvm/lib/Target/Hexagon/HexagonMCInst.h
head/contrib/llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
head/contrib/llvm/lib/Target/Mips/Disassembler/CMakeLists.txt
head/contrib/llvm/lib/Target/Mips/Disassembler/LLVMBuild.txt
head/contrib/llvm/lib/Target/Mips/Disassembler/Makefile
head/contrib/llvm/tools/clang/include/clang/Basic/DelayedCleanupPool.h
head/contrib/llvm/tools/clang/include/clang/Index/
head/contrib/llvm/tools/clang/lib/Index/
head/lib/clang/libclangindex/
Modified:
head/contrib/llvm/include/llvm-c/lto.h
head/contrib/llvm/include/llvm/ADT/SmallPtrSet.h
head/contrib/llvm/include/llvm/ADT/StringMap.h
head/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h
head/contrib/llvm/include/llvm/CodeGen/Passes.h
head/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h
head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h
head/contrib/llvm/include/llvm/IntrinsicsX86.td
head/contrib/llvm/include/llvm/LLVMContext.h
head/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h
head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h
head/contrib/llvm/include/llvm/Object/ELF.h
head/contrib/llvm/include/llvm/Operator.h
head/contrib/llvm/include/llvm/Support/IRBuilder.h
head/contrib/llvm/include/llvm/Support/Process.h
head/contrib/llvm/include/llvm/Support/SourceMgr.h
head/contrib/llvm/include/llvm/Support/YAMLParser.h
head/contrib/llvm/include/llvm/Support/raw_ostream.h
head/contrib/llvm/include/llvm/TableGen/Error.h
head/contrib/llvm/include/llvm/TableGen/Record.h
head/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h
head/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h
head/contrib/llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
head/contrib/llvm/include/llvm/Transforms/Vectorize.h
head/contrib/llvm/lib/Analysis/ConstantFolding.cpp
head/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
head/contrib/llvm/lib/Analysis/ValueTracking.cpp
head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp
head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfAccelTable.h
head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
head/contrib/llvm/lib/CodeGen/DFAPacketizer.cpp
head/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp
head/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp
head/contrib/llvm/lib/CodeGen/MachineBlockPlacement.cpp
head/contrib/llvm/lib/CodeGen/Passes.cpp
head/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp
head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
head/contrib/llvm/lib/CodeGen/SlotIndexes.cpp
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h
head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
head/contrib/llvm/lib/Object/ELFObjectFile.cpp
head/contrib/llvm/lib/Support/SmallPtrSet.cpp
head/contrib/llvm/lib/Support/SourceMgr.cpp
head/contrib/llvm/lib/Support/Unix/Process.inc
head/contrib/llvm/lib/Support/Windows/Process.inc
head/contrib/llvm/lib/Support/YAMLParser.cpp
head/contrib/llvm/lib/Support/raw_ostream.cpp
head/contrib/llvm/lib/TableGen/Error.cpp
head/contrib/llvm/lib/Target/ARM/ARMCallingConv.td
head/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td
head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td
head/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td
head/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp
head/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
head/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
head/contrib/llvm/lib/Target/CellSPU/SPUCallingConv.td
head/contrib/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp
head/contrib/llvm/lib/Target/Hexagon/Hexagon.h
head/contrib/llvm/lib/Target/Hexagon/HexagonAsmPrinter.cpp
head/contrib/llvm/lib/Target/Hexagon/HexagonISelLowering.cpp
head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormats.td
head/contrib/llvm/lib/Target/Hexagon/HexagonInstrFormatsV4.td
head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp
head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.h
head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfo.td
head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV3.td
head/contrib/llvm/lib/Target/Hexagon/HexagonInstrInfoV4.td
head/contrib/llvm/lib/Target/Hexagon/HexagonMCInstLower.cpp
head/contrib/llvm/lib/Target/Hexagon/HexagonSchedule.td
head/contrib/llvm/lib/Target/Hexagon/HexagonScheduleV4.td
head/contrib/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.cpp
head/contrib/llvm/lib/Target/Hexagon/InstPrinter/HexagonInstPrinter.h
head/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h
head/contrib/llvm/lib/Target/MBlaze/MBlazeCallingConv.td
head/contrib/llvm/lib/Target/MBlaze/MBlazeTargetMachine.cpp
head/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp
head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
head/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td
head/contrib/llvm/lib/Target/Mips/MipsCondMov.td
head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp
head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td
head/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td
head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td
head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp
head/contrib/llvm/lib/Target/PTX/PTXTargetMachine.cpp
head/contrib/llvm/lib/Target/PowerPC/PPCCallingConv.td
head/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
head/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
head/contrib/llvm/lib/Target/TargetLibraryInfo.cpp
head/contrib/llvm/lib/Target/X86/Utils/X86ShuffleDecode.cpp
head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp
head/contrib/llvm/lib/Target/X86/X86ISelLowering.h
head/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
head/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp
head/contrib/llvm/lib/Target/X86/X86InstrSSE.td
head/contrib/llvm/lib/Target/X86/X86Subtarget.cpp
head/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp
head/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.cpp
head/contrib/llvm/lib/Transforms/IPO/Internalize.cpp
head/contrib/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
head/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
head/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp
head/contrib/llvm/lib/Transforms/Scalar/ObjCARC.cpp
head/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp
head/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp
head/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
head/contrib/llvm/lib/Transforms/Vectorize/BBVectorize.cpp
head/contrib/llvm/lib/VMCore/AutoUpgrade.cpp
head/contrib/llvm/lib/VMCore/Instructions.cpp
head/contrib/llvm/lib/VMCore/LLVMContext.cpp
head/contrib/llvm/lib/VMCore/Module.cpp
head/contrib/llvm/lib/VMCore/Verifier.cpp
head/contrib/llvm/tools/clang/include/clang/AST/Decl.h
head/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h
head/contrib/llvm/tools/clang/include/clang/AST/DeclLookups.h
head/contrib/llvm/tools/clang/include/clang/AST/Expr.h
head/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h
head/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h
head/contrib/llvm/tools/clang/include/clang/AST/Stmt.h
head/contrib/llvm/tools/clang/include/clang/AST/Type.h
head/contrib/llvm/tools/clang/include/clang/AST/VTableBuilder.h
head/contrib/llvm/tools/clang/include/clang/Analysis/ProgramPoint.h
head/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def
head/contrib/llvm/tools/clang/include/clang/Basic/ConvertUTF.h
head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td
head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td
head/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificationType.h
head/contrib/llvm/tools/clang/include/clang/Basic/OnDiskHashTable.h
head/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td
head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h
head/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def
head/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td
head/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h
head/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h
head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.h
head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.h
head/contrib/llvm/tools/clang/include/clang/Frontend/TextDiagnostic.h
head/contrib/llvm/tools/clang/include/clang/Parse/Parser.h
head/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h
head/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h
head/contrib/llvm/tools/clang/include/clang/Sema/Scope.h
head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h
head/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h
head/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h
head/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h
head/contrib/llvm/tools/clang/include/clang/Serialization/Module.h
head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
head/contrib/llvm/tools/clang/include/clang/Tooling/CompilationDatabase.h
head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp
head/contrib/llvm/tools/clang/lib/AST/Decl.cpp
head/contrib/llvm/tools/clang/lib/AST/Expr.cpp
head/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp
head/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp
head/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp
head/contrib/llvm/tools/clang/lib/AST/Stmt.cpp
head/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp
head/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp
head/contrib/llvm/tools/clang/lib/AST/Type.cpp
head/contrib/llvm/tools/clang/lib/AST/VTableBuilder.cpp
head/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp
head/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp
head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
head/contrib/llvm/tools/clang/lib/Basic/Version.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h
head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.cpp
head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTBAA.h
head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
head/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp
head/contrib/llvm/tools/clang/lib/Driver/Driver.cpp
head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
head/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp
head/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp
head/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
head/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp
head/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp
head/contrib/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp
head/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
head/contrib/llvm/tools/clang/lib/Headers/avx2intrin.h
head/contrib/llvm/tools/clang/lib/Headers/avxintrin.h
head/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp
head/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp
head/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp
head/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp
head/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp
head/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp
head/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp
head/contrib/llvm/tools/clang/lib/Parse/Parser.cpp
head/contrib/llvm/tools/clang/lib/Rewrite/RewriteModernObjC.cpp
head/contrib/llvm/tools/clang/lib/Rewrite/RewriteRope.cpp
head/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp
head/contrib/llvm/tools/clang/lib/Sema/Sema.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaPseudoObject.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
head/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp
head/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h
head/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp
head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp
head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderInternals.h
head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
head/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp
head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp
head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp
head/contrib/llvm/tools/clang/lib/Serialization/Module.cpp
head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCSelfInitChecker.cpp
head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/AnalysisManager.cpp
head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp
head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
head/contrib/llvm/tools/clang/lib/Tooling/CompilationDatabase.cpp
head/contrib/llvm/tools/llc/llc.cpp
head/contrib/llvm/tools/lli/lli.cpp
head/contrib/llvm/tools/llvm-mc/Disassembler.cpp
head/contrib/llvm/tools/llvm-mc/Disassembler.h
head/contrib/llvm/tools/llvm-mc/llvm-mc.cpp
head/contrib/llvm/tools/llvm-stress/llvm-stress.cpp
head/contrib/llvm/tools/opt/opt.cpp
head/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp
head/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp
head/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp
head/contrib/llvm/utils/TableGen/EDEmitter.cpp
head/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp
head/lib/clang/Makefile
head/lib/clang/clang.build.mk
head/lib/clang/include/clang/Basic/Version.inc
head/lib/clang/include/clang/Config/config.h
head/lib/clang/include/llvm/Config/config.h
head/lib/clang/libclangsema/Makefile
head/lib/clang/libllvmruntimedyld/Makefile
head/lib/clang/libllvmsupport/Makefile
head/usr.bin/clang/clang/Makefile
Directory Properties:
head/contrib/llvm/ (props changed)
head/contrib/llvm/tools/clang/ (props changed)
Modified: head/contrib/llvm/include/llvm-c/lto.h
==============================================================================
--- head/contrib/llvm/include/llvm-c/lto.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm-c/lto.h Thu May 3 20:41:21 2012 (r234982)
@@ -251,12 +251,6 @@ lto_codegen_set_assembler_args(lto_code_
int nargs);
/**
- * Enables the internalize pass during LTO optimizations.
- */
-extern void
-lto_codegen_set_whole_program_optimization(lto_code_gen_t cg);
-
-/**
* Adds to a list of all global symbols that must exist in the final
* generated code. If a function is not listed, it might be
* inlined into every usage and optimized away.
Modified: head/contrib/llvm/include/llvm/ADT/SmallPtrSet.h
==============================================================================
--- head/contrib/llvm/include/llvm/ADT/SmallPtrSet.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/ADT/SmallPtrSet.h Thu May 3 20:41:21 2012 (r234982)
@@ -126,9 +126,6 @@ protected:
private:
bool isSmall() const { return CurArray == SmallArray; }
- unsigned Hash(const void *Ptr) const {
- return static_cast<unsigned>(((uintptr_t)Ptr >> 4) & (CurArraySize-1));
- }
const void * const *FindBucketFor(const void *Ptr) const;
void shrink_and_clear();
Modified: head/contrib/llvm/include/llvm/ADT/StringMap.h
==============================================================================
--- head/contrib/llvm/include/llvm/ADT/StringMap.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/ADT/StringMap.h Thu May 3 20:41:21 2012 (r234982)
@@ -239,7 +239,7 @@ public:
explicit StringMap(AllocatorTy A)
: StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))), Allocator(A) {}
- explicit StringMap(const StringMap &RHS)
+ StringMap(const StringMap &RHS)
: StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) {
assert(RHS.empty() &&
"Copy ctor from non-empty stringmap not implemented yet!");
Modified: head/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/CodeGen/DFAPacketizer.h Thu May 3 20:41:21 2012 (r234982)
@@ -28,7 +28,6 @@
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/ADT/DenseMap.h"
-#include <map>
namespace llvm {
@@ -37,7 +36,7 @@ class MachineInstr;
class MachineLoopInfo;
class MachineDominatorTree;
class InstrItineraryData;
-class DefaultVLIWScheduler;
+class ScheduleDAGInstrs;
class SUnit;
class DFAPacketizer {
@@ -78,8 +77,6 @@ public:
// reserveResources - Reserve the resources occupied by a machine
// instruction and change the current state to reflect that change.
void reserveResources(llvm::MachineInstr *MI);
-
- const InstrItineraryData *getInstrItins() const { return InstrItins; }
};
// VLIWPacketizerList - Implements a simple VLIW packetizer using DFA. The
@@ -90,21 +87,20 @@ public:
// and machine resource is marked as taken. If any dependency is found, a target
// API call is made to prune the dependence.
class VLIWPacketizerList {
-protected:
const TargetMachine &TM;
const MachineFunction &MF;
const TargetInstrInfo *TII;
- // The VLIW Scheduler.
- DefaultVLIWScheduler *VLIWScheduler;
+ // Encapsulate data types not exposed to the target interface.
+ ScheduleDAGInstrs *SchedulerImpl;
+protected:
// Vector of instructions assigned to the current packet.
std::vector<MachineInstr*> CurrentPacketMIs;
// DFA resource tracker.
DFAPacketizer *ResourceTracker;
-
- // Generate MI -> SU map.
- std::map<MachineInstr*, SUnit*> MIToSUnit;
+ // Scheduling units.
+ std::vector<SUnit> SUnits;
public:
VLIWPacketizerList(
@@ -122,32 +118,17 @@ public:
DFAPacketizer *getResourceTracker() {return ResourceTracker;}
// addToPacket - Add MI to the current packet.
- virtual MachineBasicBlock::iterator addToPacket(MachineInstr *MI) {
- MachineBasicBlock::iterator MII = MI;
- CurrentPacketMIs.push_back(MI);
- ResourceTracker->reserveResources(MI);
- return MII;
- }
+ void addToPacket(MachineInstr *MI);
// endPacket - End the current packet.
- void endPacket(MachineBasicBlock *MBB, MachineInstr *MI);
-
- // initPacketizerState - perform initialization before packetizing
- // an instruction. This function is supposed to be overrided by
- // the target dependent packetizer.
- virtual void initPacketizerState(void) { return; }
+ void endPacket(MachineBasicBlock *MBB, MachineInstr *I);
// ignorePseudoInstruction - Ignore bundling of pseudo instructions.
- virtual bool ignorePseudoInstruction(MachineInstr *I,
- MachineBasicBlock *MBB) {
- return false;
- }
+ bool ignorePseudoInstruction(MachineInstr *I, MachineBasicBlock *MBB);
- // isSoloInstruction - return true if instruction MI can not be packetized
- // with any other instruction, which means that MI itself is a packet.
- virtual bool isSoloInstruction(MachineInstr *MI) {
- return true;
- }
+ // isSoloInstruction - return true if instruction I must end previous
+ // packet.
+ bool isSoloInstruction(MachineInstr *I);
// isLegalToPacketizeTogether - Is it legal to packetize SUI and SUJ
// together.
@@ -160,7 +141,6 @@ public:
virtual bool isLegalToPruneDependencies(SUnit *SUI, SUnit *SUJ) {
return false;
}
-
};
}
Modified: head/contrib/llvm/include/llvm/CodeGen/Passes.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/Passes.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/CodeGen/Passes.h Thu May 3 20:41:21 2012 (r234982)
@@ -56,7 +56,7 @@ public:
protected:
TargetMachine *TM;
- PassManagerBase &PM;
+ PassManagerBase *PM;
PassConfigImpl *Impl; // Internal data structures
bool Initialized; // Flagged after all passes are configured.
Modified: head/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/CodeGen/ScheduleDAGInstrs.h Thu May 3 20:41:21 2012 (r234982)
@@ -181,6 +181,13 @@ namespace llvm {
/// the def-side latency only.
bool UnitLatencies;
+ /// The standard DAG builder does not normally include terminators as DAG
+ /// nodes because it does not create the necessary dependencies to prevent
+ /// reordering. A specialized scheduler can overide
+ /// TargetInstrInfo::isSchedulingBoundary then enable this flag to indicate
+ /// it has taken responsibility for scheduling the terminator correctly.
+ bool CanHandleTerminators;
+
/// State specific to the current scheduling region.
/// ------------------------------------------------
Modified: head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h
==============================================================================
--- head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h Thu May 3 20:41:21 2012 (r234982)
@@ -23,6 +23,7 @@
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/ADT/PointerIntPair.h"
+#include "llvm/ADT/ilist.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/Support/Allocator.h"
@@ -33,8 +34,7 @@ namespace llvm {
/// SlotIndexes pass. It should not be used directly. See the
/// SlotIndex & SlotIndexes classes for the public interface to this
/// information.
- class IndexListEntry {
- IndexListEntry *next, *prev;
+ class IndexListEntry : public ilist_node<IndexListEntry> {
MachineInstr *mi;
unsigned index;
@@ -51,31 +51,26 @@ namespace llvm {
void setIndex(unsigned index) {
this->index = index;
}
-
- IndexListEntry* getNext() { return next; }
- const IndexListEntry* getNext() const { return next; }
- void setNext(IndexListEntry *next) {
- this->next = next;
- }
- IndexListEntry* getPrev() { return prev; }
- const IndexListEntry* getPrev() const { return prev; }
- void setPrev(IndexListEntry *prev) {
- this->prev = prev;
- }
};
- // Specialize PointerLikeTypeTraits for IndexListEntry.
template <>
- class PointerLikeTypeTraits<IndexListEntry*> {
+ struct ilist_traits<IndexListEntry> : public ilist_default_traits<IndexListEntry> {
+ private:
+ mutable ilist_half_node<IndexListEntry> Sentinel;
public:
- static inline void* getAsVoidPointer(IndexListEntry *p) {
- return p;
+ IndexListEntry *createSentinel() const {
+ return static_cast<IndexListEntry*>(&Sentinel);
}
- static inline IndexListEntry* getFromVoidPointer(void *p) {
- return static_cast<IndexListEntry*>(p);
- }
- enum { NumLowBitsAvailable = 3 };
+ void destroySentinel(IndexListEntry *) const {}
+
+ IndexListEntry *provideInitialHead() const { return createSentinel(); }
+ IndexListEntry *ensureHead(IndexListEntry*) const { return createSentinel(); }
+ static void noteHead(IndexListEntry*, IndexListEntry*) {}
+ void deleteNode(IndexListEntry *N) {}
+
+ private:
+ void createNode(const IndexListEntry &);
};
/// SlotIndex - An opaque wrapper around machine indexes.
@@ -112,13 +107,13 @@ namespace llvm {
SlotIndex(IndexListEntry *entry, unsigned slot)
: lie(entry, slot) {}
- IndexListEntry& entry() const {
+ IndexListEntry* listEntry() const {
assert(isValid() && "Attempt to compare reserved index.");
- return *lie.getPointer();
+ return lie.getPointer();
}
int getIndex() const {
- return entry().getIndex() | getSlot();
+ return listEntry()->getIndex() | getSlot();
}
/// Returns the slot for this SlotIndex.
@@ -150,8 +145,7 @@ namespace llvm {
SlotIndex() : lie(0, 0) {}
// Construct a new slot index from the given one, and set the slot.
- SlotIndex(const SlotIndex &li, Slot s)
- : lie(&li.entry(), unsigned(s)) {
+ SlotIndex(const SlotIndex &li, Slot s) : lie(li.listEntry(), unsigned(s)) {
assert(lie.getPointer() != 0 &&
"Attempt to construct index with 0 pointer.");
}
@@ -179,7 +173,7 @@ namespace llvm {
bool operator!=(SlotIndex other) const {
return lie != other.lie;
}
-
+
/// Compare two SlotIndex objects. Return true if the first index
/// is strictly lower than the second.
bool operator<(SlotIndex other) const {
@@ -211,7 +205,7 @@ namespace llvm {
/// isEarlierInstr - Return true if A refers to an instruction earlier than
/// B. This is equivalent to A < B && !isSameInstr(A, B).
static bool isEarlierInstr(SlotIndex A, SlotIndex B) {
- return A.entry().getIndex() < B.entry().getIndex();
+ return A.listEntry()->getIndex() < B.listEntry()->getIndex();
}
/// Return the distance from this index to the given one.
@@ -236,25 +230,25 @@ namespace llvm {
/// is the one associated with the Slot_Block slot for the instruction
/// pointed to by this index.
SlotIndex getBaseIndex() const {
- return SlotIndex(&entry(), Slot_Block);
+ return SlotIndex(listEntry(), Slot_Block);
}
/// Returns the boundary index for associated with this index. The boundary
/// index is the one associated with the Slot_Block slot for the instruction
/// pointed to by this index.
SlotIndex getBoundaryIndex() const {
- return SlotIndex(&entry(), Slot_Dead);
+ return SlotIndex(listEntry(), Slot_Dead);
}
/// Returns the register use/def slot in the current instruction for a
/// normal or early-clobber def.
SlotIndex getRegSlot(bool EC = false) const {
- return SlotIndex(&entry(), EC ? Slot_EarlyClobber : Slot_Register);
+ return SlotIndex(listEntry(), EC ? Slot_EarlyClobber : Slot_Register);
}
/// Returns the dead def kill slot for the current instruction.
SlotIndex getDeadSlot() const {
- return SlotIndex(&entry(), Slot_Dead);
+ return SlotIndex(listEntry(), Slot_Dead);
}
/// Returns the next slot in the index list. This could be either the
@@ -266,15 +260,15 @@ namespace llvm {
SlotIndex getNextSlot() const {
Slot s = getSlot();
if (s == Slot_Dead) {
- return SlotIndex(entry().getNext(), Slot_Block);
+ return SlotIndex(listEntry()->getNextNode(), Slot_Block);
}
- return SlotIndex(&entry(), s + 1);
+ return SlotIndex(listEntry(), s + 1);
}
/// Returns the next index. This is the index corresponding to the this
/// index's slot, but for the next instruction.
SlotIndex getNextIndex() const {
- return SlotIndex(entry().getNext(), getSlot());
+ return SlotIndex(listEntry()->getNextNode(), getSlot());
}
/// Returns the previous slot in the index list. This could be either the
@@ -286,15 +280,15 @@ namespace llvm {
SlotIndex getPrevSlot() const {
Slot s = getSlot();
if (s == Slot_Block) {
- return SlotIndex(entry().getPrev(), Slot_Dead);
+ return SlotIndex(listEntry()->getPrevNode(), Slot_Dead);
}
- return SlotIndex(&entry(), s - 1);
+ return SlotIndex(listEntry(), s - 1);
}
/// Returns the previous index. This is the index corresponding to this
/// index's slot, but for the previous instruction.
SlotIndex getPrevIndex() const {
- return SlotIndex(entry().getPrev(), getSlot());
+ return SlotIndex(listEntry()->getPrevNode(), getSlot());
}
};
@@ -315,7 +309,7 @@ namespace llvm {
return (LHS == RHS);
}
};
-
+
template <> struct isPodLike<SlotIndex> { static const bool value = true; };
@@ -346,8 +340,10 @@ namespace llvm {
class SlotIndexes : public MachineFunctionPass {
private:
+ typedef ilist<IndexListEntry> IndexList;
+ IndexList indexList;
+
MachineFunction *mf;
- IndexListEntry *indexListHead;
unsigned functionSize;
typedef DenseMap<const MachineInstr*, SlotIndex> Mi2IndexMap;
@@ -374,84 +370,18 @@ namespace llvm {
return entry;
}
- void initList() {
- assert(indexListHead == 0 && "Zero entry non-null at initialisation.");
- indexListHead = createEntry(0, ~0U);
- indexListHead->setNext(0);
- indexListHead->setPrev(indexListHead);
- }
-
- void clearList() {
- indexListHead = 0;
- ileAllocator.Reset();
- }
-
- IndexListEntry* getTail() {
- assert(indexListHead != 0 && "Call to getTail on uninitialized list.");
- return indexListHead->getPrev();
- }
-
- const IndexListEntry* getTail() const {
- assert(indexListHead != 0 && "Call to getTail on uninitialized list.");
- return indexListHead->getPrev();
- }
-
- // Returns true if the index list is empty.
- bool empty() const { return (indexListHead == getTail()); }
-
- IndexListEntry* front() {
- assert(!empty() && "front() called on empty index list.");
- return indexListHead;
- }
-
- const IndexListEntry* front() const {
- assert(!empty() && "front() called on empty index list.");
- return indexListHead;
- }
-
- IndexListEntry* back() {
- assert(!empty() && "back() called on empty index list.");
- return getTail()->getPrev();
- }
-
- const IndexListEntry* back() const {
- assert(!empty() && "back() called on empty index list.");
- return getTail()->getPrev();
- }
-
- /// Insert a new entry before itr.
- void insert(IndexListEntry *itr, IndexListEntry *val) {
- assert(itr != 0 && "itr should not be null.");
- IndexListEntry *prev = itr->getPrev();
- val->setNext(itr);
- val->setPrev(prev);
-
- if (itr != indexListHead) {
- prev->setNext(val);
- }
- else {
- indexListHead = val;
- }
- itr->setPrev(val);
- }
-
- /// Push a new entry on to the end of the list.
- void push_back(IndexListEntry *val) {
- insert(getTail(), val);
- }
-
- /// Renumber locally after inserting newEntry.
- void renumberIndexes(IndexListEntry *newEntry);
+ /// Renumber locally after inserting curItr.
+ void renumberIndexes(IndexList::iterator curItr);
public:
static char ID;
- SlotIndexes() : MachineFunctionPass(ID), indexListHead(0) {
+ SlotIndexes() : MachineFunctionPass(ID) {
initializeSlotIndexesPass(*PassRegistry::getPassRegistry());
}
virtual void getAnalysisUsage(AnalysisUsage &au) const;
- virtual void releaseMemory();
+ virtual void releaseMemory();
virtual bool runOnMachineFunction(MachineFunction &fn);
@@ -463,22 +393,21 @@ namespace llvm {
/// Returns the zero index for this analysis.
SlotIndex getZeroIndex() {
- assert(front()->getIndex() == 0 && "First index is not 0?");
- return SlotIndex(front(), 0);
+ assert(indexList.front().getIndex() == 0 && "First index is not 0?");
+ return SlotIndex(&indexList.front(), 0);
}
/// Returns the base index of the last slot in this analysis.
SlotIndex getLastIndex() {
- return SlotIndex(back(), 0);
+ return SlotIndex(&indexList.back(), 0);
}
/// Returns the distance between the highest and lowest indexes allocated
/// so far.
unsigned getIndexesLength() const {
- assert(front()->getIndex() == 0 &&
+ assert(indexList.front().getIndex() == 0 &&
"Initial index isn't zero?");
-
- return back()->getIndex();
+ return indexList.back().getIndex();
}
/// Returns the number of instructions in the function.
@@ -503,19 +432,15 @@ namespace llvm {
/// Returns the instruction for the given index, or null if the given
/// index has no instruction associated with it.
MachineInstr* getInstructionFromIndex(SlotIndex index) const {
- return index.isValid() ? index.entry().getInstr() : 0;
+ return index.isValid() ? index.listEntry()->getInstr() : 0;
}
/// Returns the next non-null index.
SlotIndex getNextNonNullIndex(SlotIndex index) {
- SlotIndex nextNonNull = index.getNextIndex();
-
- while (&nextNonNull.entry() != getTail() &&
- getInstructionFromIndex(nextNonNull) == 0) {
- nextNonNull = nextNonNull.getNextIndex();
- }
-
- return nextNonNull;
+ IndexList::iterator itr(index.listEntry());
+ ++itr;
+ while (itr != indexList.end() && itr->getInstr() == 0) { ++itr; }
+ return SlotIndex(itr, index.getSlot());
}
/// getIndexBefore - Returns the index of the last indexed instruction
@@ -659,31 +584,31 @@ namespace llvm {
assert(mi->getParent() != 0 && "Instr must be added to function.");
// Get the entries where mi should be inserted.
- IndexListEntry *prevEntry, *nextEntry;
+ IndexList::iterator prevItr, nextItr;
if (Late) {
// Insert mi's index immediately before the following instruction.
- nextEntry = &getIndexAfter(mi).entry();
- prevEntry = nextEntry->getPrev();
+ nextItr = getIndexAfter(mi).listEntry();
+ prevItr = prior(nextItr);
} else {
// Insert mi's index immediately after the preceeding instruction.
- prevEntry = &getIndexBefore(mi).entry();
- nextEntry = prevEntry->getNext();
+ prevItr = getIndexBefore(mi).listEntry();
+ nextItr = llvm::next(prevItr);
}
// Get a number for the new instr, or 0 if there's no room currently.
// In the latter case we'll force a renumber later.
- unsigned dist = ((nextEntry->getIndex() - prevEntry->getIndex())/2) & ~3u;
- unsigned newNumber = prevEntry->getIndex() + dist;
+ unsigned dist = ((nextItr->getIndex() - prevItr->getIndex())/2) & ~3u;
+ unsigned newNumber = prevItr->getIndex() + dist;
// Insert a new list entry for mi.
- IndexListEntry *newEntry = createEntry(mi, newNumber);
- insert(nextEntry, newEntry);
+ IndexList::iterator newItr =
+ indexList.insert(nextItr, createEntry(mi, newNumber));
// Renumber locally if we need to.
if (dist == 0)
- renumberIndexes(newEntry);
+ renumberIndexes(newItr);
- SlotIndex newIndex(newEntry, SlotIndex::Slot_Block);
+ SlotIndex newIndex(&*newItr, SlotIndex::Slot_Block);
mi2iMap.insert(std::make_pair(mi, newIndex));
return newIndex;
}
@@ -694,7 +619,7 @@ namespace llvm {
// MachineInstr -> index mappings
Mi2IndexMap::iterator mi2iItr = mi2iMap.find(mi);
if (mi2iItr != mi2iMap.end()) {
- IndexListEntry *miEntry(&mi2iItr->second.entry());
+ IndexListEntry *miEntry(mi2iItr->second.listEntry());
assert(miEntry->getInstr() == mi && "Instruction indexes broken.");
// FIXME: Eventually we want to actually delete these indexes.
miEntry->setInstr(0);
@@ -709,7 +634,7 @@ namespace llvm {
if (mi2iItr == mi2iMap.end())
return;
SlotIndex replaceBaseIndex = mi2iItr->second;
- IndexListEntry *miEntry(&replaceBaseIndex.entry());
+ IndexListEntry *miEntry(replaceBaseIndex.listEntry());
assert(miEntry->getInstr() == mi &&
"Mismatched instruction in index tables.");
miEntry->setInstr(newMI);
@@ -726,13 +651,13 @@ namespace llvm {
IndexListEntry *nextEntry = 0;
if (nextMBB == mbb->getParent()->end()) {
- nextEntry = getTail();
+ nextEntry = indexList.end();
} else {
- nextEntry = &getMBBStartIdx(nextMBB).entry();
+ nextEntry = getMBBStartIdx(nextMBB).listEntry();
}
- insert(nextEntry, startEntry);
- insert(nextEntry, stopEntry);
+ indexList.insert(nextEntry, startEntry);
+ indexList.insert(nextEntry, stopEntry);
SlotIndex startIdx(startEntry, SlotIndex::Slot_Block);
SlotIndex endIdx(nextEntry, SlotIndex::Slot_Block);
@@ -766,4 +691,4 @@ namespace llvm {
}
-#endif // LLVM_CODEGEN_LIVEINDEX_H
+#endif // LLVM_CODEGEN_SLOTINDEXES_H
Modified: head/contrib/llvm/include/llvm/IntrinsicsX86.td
==============================================================================
--- head/contrib/llvm/include/llvm/IntrinsicsX86.td Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/IntrinsicsX86.td Thu May 3 20:41:21 2012 (r234982)
@@ -1091,20 +1091,6 @@ let TargetPrefix = "x86" in { // All in
GCCBuiltin<"__builtin_ia32_vperm2f128_si256">,
Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty,
llvm_v8i32_ty, llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx_vpermil_pd :
- Intrinsic<[llvm_v2f64_ty], [llvm_v2f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx_vpermil_ps :
- Intrinsic<[llvm_v4f32_ty], [llvm_v4f32_ty,
- llvm_i8_ty], [IntrNoMem]>;
-
- def int_x86_avx_vpermil_pd_256 :
- Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty,
- llvm_i8_ty], [IntrNoMem]>;
- def int_x86_avx_vpermil_ps_256 :
- Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty,
- llvm_i8_ty], [IntrNoMem]>;
}
// Vector blend
@@ -1659,15 +1645,9 @@ let TargetPrefix = "x86" in { // All in
def int_x86_avx2_permd : GCCBuiltin<"__builtin_ia32_permvarsi256">,
Intrinsic<[llvm_v8i32_ty], [llvm_v8i32_ty, llvm_v8i32_ty],
[IntrNoMem]>;
- def int_x86_avx2_permq : GCCBuiltin<"__builtin_ia32_permdi256">,
- Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty, llvm_i8_ty],
- [IntrNoMem]>;
def int_x86_avx2_permps : GCCBuiltin<"__builtin_ia32_permvarsf256">,
Intrinsic<[llvm_v8f32_ty], [llvm_v8f32_ty, llvm_v8f32_ty],
[IntrNoMem]>;
- def int_x86_avx2_permpd : GCCBuiltin<"__builtin_ia32_permdf256">,
- Intrinsic<[llvm_v4f64_ty], [llvm_v4f64_ty, llvm_i8_ty],
- [IntrNoMem]>;
def int_x86_avx2_vperm2i128 : GCCBuiltin<"__builtin_ia32_permti256">,
Intrinsic<[llvm_v4i64_ty], [llvm_v4i64_ty,
llvm_v4i64_ty, llvm_i8_ty], [IntrNoMem]>;
Modified: head/contrib/llvm/include/llvm/LLVMContext.h
==============================================================================
--- head/contrib/llvm/include/llvm/LLVMContext.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/LLVMContext.h Thu May 3 20:41:21 2012 (r234982)
@@ -42,7 +42,7 @@ public:
MD_dbg = 0, // "dbg"
MD_tbaa = 1, // "tbaa"
MD_prof = 2, // "prof"
- MD_fpaccuracy = 3, // "fpaccuracy"
+ MD_fpmath = 3, // "fpmath"
MD_range = 4 // "range"
};
Modified: head/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h
==============================================================================
--- head/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/MC/MCParser/AsmLexer.h Thu May 3 20:41:21 2012 (r234982)
@@ -16,14 +16,11 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/MC/MCParser/MCAsmLexer.h"
-#include "llvm/MC/MCAsmInfo.h"
#include "llvm/Support/DataTypes.h"
#include <string>
-#include <cassert>
namespace llvm {
class MemoryBuffer;
-class SMLoc;
class MCAsmInfo;
/// AsmLexer - Lexer class for assembly files.
Modified: head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h
==============================================================================
--- head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h Thu May 3 20:41:21 2012 (r234982)
@@ -15,8 +15,6 @@
#include "llvm/Support/SMLoc.h"
namespace llvm {
-class MCAsmLexer;
-class MCInst;
/// AsmToken - Target independent representation for an assembler token.
class AsmToken {
@@ -53,6 +51,7 @@ public:
Greater, GreaterEqual, GreaterGreater, At
};
+private:
TokenKind Kind;
/// A reference to the entire token contents; this is always a pointer into
Modified: head/contrib/llvm/include/llvm/Object/ELF.h
==============================================================================
--- head/contrib/llvm/include/llvm/Object/ELF.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/Object/ELF.h Thu May 3 20:41:21 2012 (r234982)
@@ -33,6 +33,15 @@
namespace llvm {
namespace object {
+// Subclasses of ELFObjectFile may need this for template instantiation
+inline std::pair<unsigned char, unsigned char>
+getElfArchType(MemoryBuffer *Object) {
+ if (Object->getBufferSize() < ELF::EI_NIDENT)
+ return std::make_pair((uint8_t)ELF::ELFCLASSNONE,(uint8_t)ELF::ELFDATANONE);
+ return std::make_pair( (uint8_t)Object->getBufferStart()[ELF::EI_CLASS]
+ , (uint8_t)Object->getBufferStart()[ELF::EI_DATA]);
+}
+
// Templates to choose Elf_Addr and Elf_Off depending on is64Bits.
template<support::endianness target_endianness>
struct ELFDataTypeTypedefHelperCommon {
Modified: head/contrib/llvm/include/llvm/Operator.h
==============================================================================
--- head/contrib/llvm/include/llvm/Operator.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/Operator.h Thu May 3 20:41:21 2012 (r234982)
@@ -15,8 +15,9 @@
#ifndef LLVM_OPERATOR_H
#define LLVM_OPERATOR_H
-#include "llvm/Instruction.h"
#include "llvm/Constants.h"
+#include "llvm/Instruction.h"
+#include "llvm/Type.h"
namespace llvm {
@@ -129,14 +130,15 @@ public:
IsExact = (1 << 0)
};
+private:
+ ~PossiblyExactOperator(); // do not implement
+
friend class BinaryOperator;
friend class ConstantExpr;
void setIsExact(bool B) {
SubclassOptionalData = (SubclassOptionalData & ~IsExact) | (B * IsExact);
}
-private:
- ~PossiblyExactOperator(); // do not implement
public:
/// isExact - Test whether this division is known to be exact, with
/// zero remainder.
@@ -161,7 +163,28 @@ public:
(isa<ConstantExpr>(V) && classof(cast<ConstantExpr>(V)));
}
};
-
+
+/// FPMathOperator - Utility class for floating point operations which can have
+/// information about relaxed accuracy requirements attached to them.
+class FPMathOperator : public Operator {
+private:
+ ~FPMathOperator(); // do not implement
+
+public:
+
+ /// \brief Get the maximum error permitted by this operation in ULPs. An
+ /// accuracy of 0.0 means that the operation should be performed with the
+ /// default precision.
+ float getFPAccuracy() const;
+
+ static inline bool classof(const FPMathOperator *) { return true; }
+ static inline bool classof(const Instruction *I) {
+ return I->getType()->isFPOrFPVectorTy();
+ }
+ static inline bool classof(const Value *V) {
+ return isa<Instruction>(V) && classof(cast<Instruction>(V));
+ }
+};
/// ConcreteOperator - A helper template for defining operators for individual
Modified: head/contrib/llvm/include/llvm/Support/IRBuilder.h
==============================================================================
--- head/contrib/llvm/include/llvm/Support/IRBuilder.h Thu May 3 20:00:30 2012 (r234981)
+++ head/contrib/llvm/include/llvm/Support/IRBuilder.h Thu May 3 20:41:21 2012 (r234982)
@@ -17,6 +17,7 @@
#include "llvm/Instructions.h"
#include "llvm/BasicBlock.h"
+#include "llvm/LLVMContext.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
@@ -331,49 +332,63 @@ template<bool preserveNames = true, type
typename Inserter = IRBuilderDefaultInserter<preserveNames> >
class IRBuilder : public IRBuilderBase, public Inserter {
T Folder;
+ MDNode *DefaultFPMathTag;
public:
- IRBuilder(LLVMContext &C, const T &F, const Inserter &I = Inserter())
- : IRBuilderBase(C), Inserter(I), Folder(F) {
+ IRBuilder(LLVMContext &C, const T &F, const Inserter &I = Inserter(),
+ MDNode *FPMathTag = 0)
+ : IRBuilderBase(C), Inserter(I), Folder(F), DefaultFPMathTag(FPMathTag) {
}
- explicit IRBuilder(LLVMContext &C) : IRBuilderBase(C), Folder() {
+ explicit IRBuilder(LLVMContext &C, MDNode *FPMathTag = 0) : IRBuilderBase(C),
+ Folder(), DefaultFPMathTag(FPMathTag) {
}
- explicit IRBuilder(BasicBlock *TheBB, const T &F)
- : IRBuilderBase(TheBB->getContext()), Folder(F) {
+ explicit IRBuilder(BasicBlock *TheBB, const T &F, MDNode *FPMathTag = 0)
+ : IRBuilderBase(TheBB->getContext()), Folder(F),
+ DefaultFPMathTag(FPMathTag) {
SetInsertPoint(TheBB);
}
- explicit IRBuilder(BasicBlock *TheBB)
- : IRBuilderBase(TheBB->getContext()), Folder() {
+ explicit IRBuilder(BasicBlock *TheBB, MDNode *FPMathTag = 0)
+ : IRBuilderBase(TheBB->getContext()), Folder(),
+ DefaultFPMathTag(FPMathTag) {
SetInsertPoint(TheBB);
}
- explicit IRBuilder(Instruction *IP)
- : IRBuilderBase(IP->getContext()), Folder() {
+ explicit IRBuilder(Instruction *IP, MDNode *FPMathTag = 0)
+ : IRBuilderBase(IP->getContext()), Folder(), DefaultFPMathTag(FPMathTag) {
SetInsertPoint(IP);
SetCurrentDebugLocation(IP->getDebugLoc());
}
- explicit IRBuilder(Use &U)
- : IRBuilderBase(U->getContext()), Folder() {
+ explicit IRBuilder(Use &U, MDNode *FPMathTag = 0)
+ : IRBuilderBase(U->getContext()), Folder(), DefaultFPMathTag(FPMathTag) {
SetInsertPoint(U);
SetCurrentDebugLocation(cast<Instruction>(U.getUser())->getDebugLoc());
}
- IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F)
- : IRBuilderBase(TheBB->getContext()), Folder(F) {
+ IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, const T& F,
+ MDNode *FPMathTag = 0)
+ : IRBuilderBase(TheBB->getContext()), Folder(F),
+ DefaultFPMathTag(FPMathTag) {
SetInsertPoint(TheBB, IP);
}
- IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP)
- : IRBuilderBase(TheBB->getContext()), Folder() {
+ IRBuilder(BasicBlock *TheBB, BasicBlock::iterator IP, MDNode *FPMathTag = 0)
+ : IRBuilderBase(TheBB->getContext()), Folder(),
+ DefaultFPMathTag(FPMathTag) {
SetInsertPoint(TheBB, IP);
}
/// getFolder - Get the constant folder being used.
const T &getFolder() { return Folder; }
+ /// getDefaultFPMathTag - Get the floating point math metadata being used.
+ MDNode *getDefaultFPMathTag() const { return DefaultFPMathTag; }
+
+ /// SetDefaultFPMathTag - Set the floating point math metadata to be used.
+ void SetDefaultFPMathTag(MDNode *FPMathTag) { DefaultFPMathTag = FPMathTag; }
+
/// isNamePreserving - Return true if this builder is configured to actually
/// add the requested names to IR created through it.
bool isNamePreserving() const { return preserveNames; }
@@ -496,6 +511,14 @@ private:
if (HasNSW) BO->setHasNoSignedWrap();
return BO;
}
+
+ Instruction *AddFPMathTag(Instruction *I, MDNode *FPMathTag) const {
+ if (!FPMathTag)
+ FPMathTag = DefaultFPMathTag;
+ if (FPMathTag)
+ I->setMetadata(LLVMContext::MD_fpmath, FPMathTag);
+ return I;
+ }
public:
Value *CreateAdd(Value *LHS, Value *RHS, const Twine &Name = "",
bool HasNUW = false, bool HasNSW = false) {
@@ -511,11 +534,13 @@ public:
Value *CreateNUWAdd(Value *LHS, Value *RHS, const Twine &Name = "") {
return CreateAdd(LHS, RHS, Name, true, false);
}
- Value *CreateFAdd(Value *LHS, Value *RHS, const Twine &Name = "") {
+ Value *CreateFAdd(Value *LHS, Value *RHS, const Twine &Name = "",
+ MDNode *FPMathTag = 0) {
if (Constant *LC = dyn_cast<Constant>(LHS))
if (Constant *RC = dyn_cast<Constant>(RHS))
return Insert(Folder.CreateFAdd(LC, RC), Name);
- return Insert(BinaryOperator::CreateFAdd(LHS, RHS), Name);
+ return Insert(AddFPMathTag(BinaryOperator::CreateFAdd(LHS, RHS),
+ FPMathTag), Name);
}
Value *CreateSub(Value *LHS, Value *RHS, const Twine &Name = "",
bool HasNUW = false, bool HasNSW = false) {
@@ -531,11 +556,13 @@ public:
Value *CreateNUWSub(Value *LHS, Value *RHS, const Twine &Name = "") {
return CreateSub(LHS, RHS, Name, true, false);
}
- Value *CreateFSub(Value *LHS, Value *RHS, const Twine &Name = "") {
+ Value *CreateFSub(Value *LHS, Value *RHS, const Twine &Name = "",
+ MDNode *FPMathTag = 0) {
if (Constant *LC = dyn_cast<Constant>(LHS))
if (Constant *RC = dyn_cast<Constant>(RHS))
return Insert(Folder.CreateFSub(LC, RC), Name);
- return Insert(BinaryOperator::CreateFSub(LHS, RHS), Name);
+ return Insert(AddFPMathTag(BinaryOperator::CreateFSub(LHS, RHS),
+ FPMathTag), Name);
}
Value *CreateMul(Value *LHS, Value *RHS, const Twine &Name = "",
bool HasNUW = false, bool HasNSW = false) {
@@ -551,11 +578,13 @@ public:
Value *CreateNUWMul(Value *LHS, Value *RHS, const Twine &Name = "") {
return CreateMul(LHS, RHS, Name, true, false);
}
- Value *CreateFMul(Value *LHS, Value *RHS, const Twine &Name = "") {
+ Value *CreateFMul(Value *LHS, Value *RHS, const Twine &Name = "",
+ MDNode *FPMathTag = 0) {
if (Constant *LC = dyn_cast<Constant>(LHS))
if (Constant *RC = dyn_cast<Constant>(RHS))
return Insert(Folder.CreateFMul(LC, RC), Name);
- return Insert(BinaryOperator::CreateFMul(LHS, RHS), Name);
+ return Insert(AddFPMathTag(BinaryOperator::CreateFMul(LHS, RHS),
+ FPMathTag), Name);
}
Value *CreateUDiv(Value *LHS, Value *RHS, const Twine &Name = "",
bool isExact = false) {
@@ -581,11 +610,13 @@ public:
Value *CreateExactSDiv(Value *LHS, Value *RHS, const Twine &Name = "") {
return CreateSDiv(LHS, RHS, Name, true);
}
- Value *CreateFDiv(Value *LHS, Value *RHS, const Twine &Name = "") {
+ Value *CreateFDiv(Value *LHS, Value *RHS, const Twine &Name = "",
+ MDNode *FPMathTag = 0) {
if (Constant *LC = dyn_cast<Constant>(LHS))
if (Constant *RC = dyn_cast<Constant>(RHS))
return Insert(Folder.CreateFDiv(LC, RC), Name);
- return Insert(BinaryOperator::CreateFDiv(LHS, RHS), Name);
+ return Insert(AddFPMathTag(BinaryOperator::CreateFDiv(LHS, RHS),
+ FPMathTag), Name);
}
Value *CreateURem(Value *LHS, Value *RHS, const Twine &Name = "") {
if (Constant *LC = dyn_cast<Constant>(LHS))
@@ -599,11 +630,13 @@ public:
return Insert(Folder.CreateSRem(LC, RC), Name);
return Insert(BinaryOperator::CreateSRem(LHS, RHS), Name);
}
- Value *CreateFRem(Value *LHS, Value *RHS, const Twine &Name = "") {
+ Value *CreateFRem(Value *LHS, Value *RHS, const Twine &Name = "",
+ MDNode *FPMathTag = 0) {
if (Constant *LC = dyn_cast<Constant>(LHS))
if (Constant *RC = dyn_cast<Constant>(RHS))
return Insert(Folder.CreateFRem(LC, RC), Name);
- return Insert(BinaryOperator::CreateFRem(LHS, RHS), Name);
+ return Insert(AddFPMathTag(BinaryOperator::CreateFRem(LHS, RHS),
+ FPMathTag), Name);
}
Value *CreateShl(Value *LHS, Value *RHS, const Twine &Name = "",
@@ -729,10 +762,10 @@ public:
Value *CreateNUWNeg(Value *V, const Twine &Name = "") {
return CreateNeg(V, Name, true, false);
}
- Value *CreateFNeg(Value *V, const Twine &Name = "") {
+ Value *CreateFNeg(Value *V, const Twine &Name = "", MDNode *FPMathTag = 0) {
if (Constant *VC = dyn_cast<Constant>(V))
return Insert(Folder.CreateFNeg(VC), Name);
- return Insert(BinaryOperator::CreateFNeg(V), Name);
+ return Insert(AddFPMathTag(BinaryOperator::CreateFNeg(V), FPMathTag), Name);
}
Value *CreateNot(Value *V, const Twine &Name = "") {
if (Constant *VC = dyn_cast<Constant>(V))
Copied: head/contrib/llvm/include/llvm/Support/Locale.h (from r234974, vendor/llvm/dist/include/llvm/Support/Locale.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/contrib/llvm/include/llvm/Support/Locale.h Thu May 3 20:41:21 2012 (r234982, copy of r234974, vendor/llvm/dist/include/llvm/Support/Locale.h)
@@ -0,0 +1,17 @@
+#ifndef LLVM_SUPPORT_LOCALE
+#define LLVM_SUPPORT_LOCALE
+
+#include "llvm/ADT/StringRef.h"
+
+namespace llvm {
+namespace sys {
+namespace locale {
+
+int columnWidth(StringRef s);
+bool isPrint(int c);
+
+}
+}
+}
+
+#endif // LLVM_SUPPORT_LOCALE
Copied: head/contrib/llvm/include/llvm/Support/MDBuilder.h (from r234974, vendor/llvm/dist/include/llvm/Support/MDBuilder.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/contrib/llvm/include/llvm/Support/MDBuilder.h Thu May 3 20:41:21 2012 (r234982, copy of r234974, vendor/llvm/dist/include/llvm/Support/MDBuilder.h)
@@ -0,0 +1,118 @@
+//===---- llvm/Support/MDBuilder.h - Builder for LLVM metadata --*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the MDBuilder class, which is used as a convenient way to
+// create LLVM metadata with a consistent and simplified interface.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_MDBUILDER_H
+#define LLVM_SUPPORT_MDBUILDER_H
+
+#include "llvm/Constants.h"
+#include "llvm/DerivedTypes.h"
+#include "llvm/LLVMContext.h"
+#include "llvm/Metadata.h"
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-head
mailing list