Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 May 2012 20:41:22 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   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...
Message-ID:  <201205032041.q43KfMYu062048@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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 ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205032041.q43KfMYu062048>