svn commit: r198396 - in vendor/llvm/dist: . cmake/modules docs docs/CommandGuide examples/BrainF include/llvm include/llvm-c include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llv...

Roman Divacky rdivacky at FreeBSD.org
Fri Oct 23 14:19:53 UTC 2009


Author: rdivacky
Date: Fri Oct 23 14:19:52 2009
New Revision: 198396
URL: http://svn.freebsd.org/changeset/base/198396

Log:
  Update LLVM to r84949.

Added:
  vendor/llvm/dist/include/llvm/ADT/ValueMap.h
  vendor/llvm/dist/include/llvm/Analysis/DomPrinter.h
  vendor/llvm/dist/include/llvm/Config/AsmParsers.def
  vendor/llvm/dist/include/llvm/Config/AsmPrinters.def
  vendor/llvm/dist/include/llvm/Config/Targets.def
  vendor/llvm/dist/include/llvm/Config/config.h
  vendor/llvm/dist/include/llvm/Support/DataTypes.h
  vendor/llvm/dist/lib/Analysis/DomPrinter.cpp
  vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp
  vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMInstPrinter.h
  vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMMCInstLower.cpp
  vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMMCInstLower.h
  vendor/llvm/dist/lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp
  vendor/llvm/dist/lib/Target/Blackfin/BlackfinIntrinsicInfo.h
  vendor/llvm/dist/lib/Target/Blackfin/BlackfinIntrinsics.td
  vendor/llvm/dist/lib/Target/MSP430/AsmPrinter/MSP430InstPrinter.cpp
  vendor/llvm/dist/lib/Target/MSP430/AsmPrinter/MSP430InstPrinter.h
  vendor/llvm/dist/lib/Target/MSP430/AsmPrinter/MSP430MCInstLower.cpp
  vendor/llvm/dist/lib/Target/MSP430/AsmPrinter/MSP430MCInstLower.h
  vendor/llvm/dist/lib/Target/PIC16/PIC16ABINames.h
  vendor/llvm/dist/lib/Target/PIC16/PIC16Passes/
  vendor/llvm/dist/lib/Target/PIC16/PIC16Passes/Makefile
  vendor/llvm/dist/lib/Target/PIC16/PIC16Passes/PIC16Overlay.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16Passes/PIC16Overlay.h
  vendor/llvm/dist/lib/Target/PIC16/PIC16Section.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16Section.h
  vendor/llvm/dist/mklib   (contents, props changed)
  vendor/llvm/dist/test/Assembler/alignstack.ll
  vendor/llvm/dist/test/CodeGen/ARM/2009-10-21-InvalidFNeg.ll
  vendor/llvm/dist/test/CodeGen/ARM/globals.ll
  vendor/llvm/dist/test/CodeGen/ARM/movt.ll
  vendor/llvm/dist/test/CodeGen/CellSPU/useful-harnesses/lit.local.cfg
  vendor/llvm/dist/test/CodeGen/MSP430/Inst16ri.ll
  vendor/llvm/dist/test/CodeGen/MSP430/Inst8ri.ll
  vendor/llvm/dist/test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-10-14-LiveVariablesBug.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-10-19-EmergencySpill.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-10-19-atomic-cmp-eflags.ll
  vendor/llvm/dist/test/CodeGen/X86/codegen-prepare-extload.ll
  vendor/llvm/dist/test/CodeGen/X86/discontiguous-loops.ll
  vendor/llvm/dist/test/CodeGen/X86/legalize-fmp-oeq-vector-select.ll
  vendor/llvm/dist/test/CodeGen/X86/loop-blocks.ll
  vendor/llvm/dist/test/CodeGen/X86/palignr.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_extract-1.ll
  vendor/llvm/dist/test/DebugInfo/2009-10-16-Phi.ll
  vendor/llvm/dist/test/DebugInfo/2009-10-16-Scope.ll
  vendor/llvm/dist/test/FrontendAda/negative_field_offset.adb
  vendor/llvm/dist/test/FrontendC++/alignstack.cpp
  vendor/llvm/dist/test/FrontendC++/varargs.cpp
  vendor/llvm/dist/test/FrontendC/alignstack.c
  vendor/llvm/dist/test/LLVMC/MultiplePluginPriorities.td
  vendor/llvm/dist/test/MC/AsmParser/variables-invalid.s
  vendor/llvm/dist/test/MC/AsmParser/variables.s
  vendor/llvm/dist/test/Transforms/ConstProp/constant-expr.ll
  vendor/llvm/dist/test/Transforms/ConstProp/loads.ll
  vendor/llvm/dist/test/Transforms/GlobalOpt/2009-11-16-BrokenPerformHeapAllocSRoA.ll
  vendor/llvm/dist/test/Transforms/GlobalOpt/2009-11-16-MallocSingleStoreToGlobalVar.ll
  vendor/llvm/dist/test/Transforms/LoopSimplify/unreachable-loop-pred.ll
  vendor/llvm/dist/unittests/ADT/ValueMapTest.cpp
Modified:
  vendor/llvm/dist/Makefile
  vendor/llvm/dist/Makefile.rules
  vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake
  vendor/llvm/dist/docs/CMake.html
  vendor/llvm/dist/docs/CommandGuide/FileCheck.pod
  vendor/llvm/dist/docs/CommandGuide/index.html
  vendor/llvm/dist/docs/GettingStarted.html
  vendor/llvm/dist/docs/LangRef.html
  vendor/llvm/dist/docs/ProgrammersManual.html
  vendor/llvm/dist/docs/ReleaseNotes.html
  vendor/llvm/dist/examples/BrainF/BrainF.cpp
  vendor/llvm/dist/include/llvm-c/Core.h
  vendor/llvm/dist/include/llvm/ADT/APFloat.h
  vendor/llvm/dist/include/llvm/ADT/DenseMapInfo.h
  vendor/llvm/dist/include/llvm/ADT/FoldingSet.h
  vendor/llvm/dist/include/llvm/ADT/StringExtras.h
  vendor/llvm/dist/include/llvm/ADT/StringRef.h
  vendor/llvm/dist/include/llvm/ADT/Triple.h
  vendor/llvm/dist/include/llvm/Analysis/CFGPrinter.h
  vendor/llvm/dist/include/llvm/Analysis/CallGraph.h
  vendor/llvm/dist/include/llvm/Analysis/ConstantFolding.h
  vendor/llvm/dist/include/llvm/Analysis/Dominators.h
  vendor/llvm/dist/include/llvm/Analysis/MallocHelper.h
  vendor/llvm/dist/include/llvm/Analysis/PostDominators.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineFrameInfo.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineLoopInfo.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineModuleInfo.h
  vendor/llvm/dist/include/llvm/CodeGen/Passes.h
  vendor/llvm/dist/include/llvm/CodeGen/PseudoSourceValue.h
  vendor/llvm/dist/include/llvm/CompilerDriver/Common.td
  vendor/llvm/dist/include/llvm/CompilerDriver/Plugin.h
  vendor/llvm/dist/include/llvm/Constants.h
  vendor/llvm/dist/include/llvm/ExecutionEngine/JITEventListener.h
  vendor/llvm/dist/include/llvm/ExecutionEngine/JITMemoryManager.h
  vendor/llvm/dist/include/llvm/InlineAsm.h
  vendor/llvm/dist/include/llvm/InstrTypes.h
  vendor/llvm/dist/include/llvm/Instruction.def
  vendor/llvm/dist/include/llvm/Instructions.h
  vendor/llvm/dist/include/llvm/Intrinsics.td
  vendor/llvm/dist/include/llvm/LLVMContext.h
  vendor/llvm/dist/include/llvm/LinkAllPasses.h
  vendor/llvm/dist/include/llvm/MC/MCAssembler.h
  vendor/llvm/dist/include/llvm/MC/MCContext.h
  vendor/llvm/dist/include/llvm/MC/MCExpr.h
  vendor/llvm/dist/include/llvm/MC/MCSymbol.h
  vendor/llvm/dist/include/llvm/Metadata.h
  vendor/llvm/dist/include/llvm/PassAnalysisSupport.h
  vendor/llvm/dist/include/llvm/PassSupport.h
  vendor/llvm/dist/include/llvm/Support/IRBuilder.h
  vendor/llvm/dist/include/llvm/Support/InstVisitor.h
  vendor/llvm/dist/include/llvm/Support/ValueHandle.h
  vendor/llvm/dist/include/llvm/Support/raw_ostream.h
  vendor/llvm/dist/include/llvm/Support/type_traits.h
  vendor/llvm/dist/include/llvm/Target/TargetIntrinsicInfo.h
  vendor/llvm/dist/include/llvm/Target/TargetMachine.h
  vendor/llvm/dist/include/llvm/Target/TargetRegisterInfo.h
  vendor/llvm/dist/include/llvm/Target/TargetRegistry.h
  vendor/llvm/dist/include/llvm/Target/TargetSubtarget.h
  vendor/llvm/dist/include/llvm/Transforms/IPO.h
  vendor/llvm/dist/include/llvm/Transforms/Scalar.h
  vendor/llvm/dist/include/llvm/Transforms/Utils/SSAUpdater.h
  vendor/llvm/dist/include/llvm/Value.h
  vendor/llvm/dist/lib/Analysis/BasicAliasAnalysis.cpp
  vendor/llvm/dist/lib/Analysis/CFGPrinter.cpp
  vendor/llvm/dist/lib/Analysis/CMakeLists.txt
  vendor/llvm/dist/lib/Analysis/ConstantFolding.cpp
  vendor/llvm/dist/lib/Analysis/IPA/GlobalsModRef.cpp
  vendor/llvm/dist/lib/Analysis/InlineCost.cpp
  vendor/llvm/dist/lib/Analysis/InstCount.cpp
  vendor/llvm/dist/lib/Analysis/LoopInfo.cpp
  vendor/llvm/dist/lib/Analysis/MallocHelper.cpp
  vendor/llvm/dist/lib/Analysis/PointerTracking.cpp
  vendor/llvm/dist/lib/Analysis/ValueTracking.cpp
  vendor/llvm/dist/lib/AsmParser/LLLexer.cpp
  vendor/llvm/dist/lib/AsmParser/LLParser.cpp
  vendor/llvm/dist/lib/AsmParser/LLParser.h
  vendor/llvm/dist/lib/AsmParser/LLToken.h
  vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp
  vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp
  vendor/llvm/dist/lib/Bitcode/Writer/ValueEnumerator.cpp
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.cpp
  vendor/llvm/dist/lib/CodeGen/BranchFolding.cpp
  vendor/llvm/dist/lib/CodeGen/CodePlacementOpt.cpp
  vendor/llvm/dist/lib/CodeGen/ExactHazardRecognizer.cpp
  vendor/llvm/dist/lib/CodeGen/LLVMTargetMachine.cpp
  vendor/llvm/dist/lib/CodeGen/LiveIntervalAnalysis.cpp
  vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp
  vendor/llvm/dist/lib/CodeGen/MachineLoopInfo.cpp
  vendor/llvm/dist/lib/CodeGen/MachineSink.cpp
  vendor/llvm/dist/lib/CodeGen/PostRASchedulerList.cpp
  vendor/llvm/dist/lib/CodeGen/PreAllocSplitting.cpp
  vendor/llvm/dist/lib/CodeGen/PrologEpilogInserter.cpp
  vendor/llvm/dist/lib/CodeGen/PseudoSourceValue.cpp
  vendor/llvm/dist/lib/CodeGen/RegAllocLocal.cpp
  vendor/llvm/dist/lib/CodeGen/RegisterScavenging.cpp
  vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.cpp
  vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.h
  vendor/llvm/dist/lib/CodeGen/ScheduleDAGPrinter.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuild.h
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  vendor/llvm/dist/lib/CodeGen/StackProtector.cpp
  vendor/llvm/dist/lib/CodeGen/VirtRegMap.cpp
  vendor/llvm/dist/lib/CompilerDriver/Main.cpp
  vendor/llvm/dist/lib/CompilerDriver/Plugin.cpp
  vendor/llvm/dist/lib/ExecutionEngine/JIT/CMakeLists.txt
  vendor/llvm/dist/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp
  vendor/llvm/dist/lib/ExecutionEngine/JIT/JITEmitter.cpp
  vendor/llvm/dist/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
  vendor/llvm/dist/lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp
  vendor/llvm/dist/lib/MC/MCAsmStreamer.cpp
  vendor/llvm/dist/lib/MC/MCAssembler.cpp
  vendor/llvm/dist/lib/MC/MCContext.cpp
  vendor/llvm/dist/lib/MC/MCExpr.cpp
  vendor/llvm/dist/lib/MC/MCMachOStreamer.cpp
  vendor/llvm/dist/lib/Support/APFloat.cpp
  vendor/llvm/dist/lib/Support/StringExtras.cpp
  vendor/llvm/dist/lib/Support/StringMap.cpp
  vendor/llvm/dist/lib/Support/Triple.cpp
  vendor/llvm/dist/lib/Support/raw_ostream.cpp
  vendor/llvm/dist/lib/System/Unix/Program.inc
  vendor/llvm/dist/lib/Target/ARM/ARMAddressingModes.h
  vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.h
  vendor/llvm/dist/lib/Target/ARM/ARMConstantIslandPass.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMInstrFormats.td
  vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td
  vendor/llvm/dist/lib/Target/ARM/ARMInstrNEON.td
  vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td
  vendor/llvm/dist/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.td
  vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.h
  vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp
  vendor/llvm/dist/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
  vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
  vendor/llvm/dist/lib/Target/ARM/AsmPrinter/CMakeLists.txt
  vendor/llvm/dist/lib/Target/ARM/README-Thumb.txt
  vendor/llvm/dist/lib/Target/ARM/Thumb1RegisterInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/Thumb1RegisterInfo.h
  vendor/llvm/dist/lib/Target/ARM/Thumb2ITBlockPass.cpp
  vendor/llvm/dist/lib/Target/ARM/Thumb2RegisterInfo.cpp
  vendor/llvm/dist/lib/Target/Blackfin/Blackfin.td
  vendor/llvm/dist/lib/Target/Blackfin/BlackfinTargetMachine.h
  vendor/llvm/dist/lib/Target/Blackfin/CMakeLists.txt
  vendor/llvm/dist/lib/Target/Blackfin/Makefile
  vendor/llvm/dist/lib/Target/CBackend/CBackend.cpp
  vendor/llvm/dist/lib/Target/CppBackend/CPPBackend.cpp
  vendor/llvm/dist/lib/Target/MSIL/MSILWriter.cpp
  vendor/llvm/dist/lib/Target/MSP430/AsmPrinter/CMakeLists.txt
  vendor/llvm/dist/lib/Target/MSP430/AsmPrinter/MSP430AsmPrinter.cpp
  vendor/llvm/dist/lib/Target/MSP430/MSP430.h
  vendor/llvm/dist/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.cpp
  vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.cpp
  vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.h
  vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.td
  vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.cpp
  vendor/llvm/dist/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp
  vendor/llvm/dist/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h
  vendor/llvm/dist/lib/Target/PIC16/CMakeLists.txt
  vendor/llvm/dist/lib/Target/PIC16/Makefile
  vendor/llvm/dist/lib/Target/PIC16/PIC16.h
  vendor/llvm/dist/lib/Target/PIC16/PIC16DebugInfo.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16ISelLowering.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16InstrInfo.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16MCAsmInfo.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16MemSelOpt.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16TargetObjectFile.cpp
  vendor/llvm/dist/lib/Target/PIC16/PIC16TargetObjectFile.h
  vendor/llvm/dist/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
  vendor/llvm/dist/lib/Target/README.txt
  vendor/llvm/dist/lib/Target/TargetIntrinsicInfo.cpp
  vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp
  vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.h
  vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
  vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
  vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp
  vendor/llvm/dist/lib/Target/X86/X86ISelLowering.h
  vendor/llvm/dist/lib/Target/X86/X86Instr64bit.td
  vendor/llvm/dist/lib/Target/X86/X86InstrFormats.td
  vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td
  vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td
  vendor/llvm/dist/lib/Target/X86/X86Subtarget.cpp
  vendor/llvm/dist/lib/Target/X86/X86Subtarget.h
  vendor/llvm/dist/lib/Transforms/Hello/Hello.cpp
  vendor/llvm/dist/lib/Transforms/IPO/CMakeLists.txt
  vendor/llvm/dist/lib/Transforms/IPO/FunctionAttrs.cpp
  vendor/llvm/dist/lib/Transforms/IPO/GlobalDCE.cpp
  vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp
  vendor/llvm/dist/lib/Transforms/IPO/RaiseAllocations.cpp
  vendor/llvm/dist/lib/Transforms/IPO/StripSymbols.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/CodeGenPrepare.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/InstructionCombining.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopUnswitch.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp
  vendor/llvm/dist/lib/Transforms/Utils/BasicBlockUtils.cpp
  vendor/llvm/dist/lib/Transforms/Utils/InlineFunction.cpp
  vendor/llvm/dist/lib/Transforms/Utils/InstructionNamer.cpp
  vendor/llvm/dist/lib/Transforms/Utils/LowerAllocations.cpp
  vendor/llvm/dist/lib/Transforms/Utils/SSAUpdater.cpp
  vendor/llvm/dist/lib/VMCore/AsmWriter.cpp
  vendor/llvm/dist/lib/VMCore/ConstantFold.cpp
  vendor/llvm/dist/lib/VMCore/Constants.cpp
  vendor/llvm/dist/lib/VMCore/Core.cpp
  vendor/llvm/dist/lib/VMCore/InlineAsm.cpp
  vendor/llvm/dist/lib/VMCore/Instruction.cpp
  vendor/llvm/dist/lib/VMCore/Instructions.cpp
  vendor/llvm/dist/lib/VMCore/LLVMContext.cpp
  vendor/llvm/dist/lib/VMCore/LLVMContextImpl.h
  vendor/llvm/dist/lib/VMCore/Metadata.cpp
  vendor/llvm/dist/lib/VMCore/Pass.cpp
  vendor/llvm/dist/lib/VMCore/Value.cpp
  vendor/llvm/dist/lib/VMCore/Verifier.cpp
  vendor/llvm/dist/test/Analysis/BasicAA/modref.ll
  vendor/llvm/dist/test/Bindings/Ocaml/vmcore.ml
  vendor/llvm/dist/test/CodeGen/ARM/ldrd.ll
  vendor/llvm/dist/test/CodeGen/ARM/sbfx.ll
  vendor/llvm/dist/test/CodeGen/Blackfin/sync-intr.ll
  vendor/llvm/dist/test/CodeGen/CellSPU/2009-01-01-BrCond.ll
  vendor/llvm/dist/test/CodeGen/Generic/switch-lower-feature-2.ll
  vendor/llvm/dist/test/CodeGen/PIC16/globals.ll
  vendor/llvm/dist/test/CodeGen/Thumb/2009-08-20-ISelBug.ll
  vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-mov.ll
  vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-mov2.ll
  vendor/llvm/dist/test/CodeGen/X86/2007-01-08-InstrSched.ll
  vendor/llvm/dist/test/CodeGen/X86/2008-07-11-SpillerBug.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-04-20-LinearScanOpt.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-09-19-SchedCustomLoweringBug.ll
  vendor/llvm/dist/test/CodeGen/X86/abi-isel.ll
  vendor/llvm/dist/test/CodeGen/X86/fastcc.ll
  vendor/llvm/dist/test/CodeGen/X86/peep-test-3.ll
  vendor/llvm/dist/test/CodeGen/X86/pic.ll
  vendor/llvm/dist/test/CodeGen/X86/sink-hoist.ll
  vendor/llvm/dist/test/CodeGen/X86/sse2.ll
  vendor/llvm/dist/test/CodeGen/X86/sse3.ll
  vendor/llvm/dist/test/CodeGen/X86/stack-color-with-reg.ll
  vendor/llvm/dist/test/CodeGen/X86/tailcallstack64.ll
  vendor/llvm/dist/test/CodeGen/X86/vec_shuffle-22.ll
  vendor/llvm/dist/test/CodeGen/X86/vec_shuffle-9.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-1.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-2.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-3.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-4.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-5.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-6.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_cast-1.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_cast-2.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_cast-3.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_cast-4.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_cast-5.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_cast-6.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_conv-1.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_conv-2.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_conv-3.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_conv-4.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_select-1.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_shuffle-1.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_shuffle-2.ll
  vendor/llvm/dist/test/Feature/md_on_instruction.ll
  vendor/llvm/dist/test/FrontendC++/member-alignment.cpp
  vendor/llvm/dist/test/MC/AsmParser/labels.s
  vendor/llvm/dist/test/Transforms/GVN/calls-readonly.ll
  vendor/llvm/dist/test/Transforms/GlobalOpt/malloc-promote-2.ll
  vendor/llvm/dist/test/Transforms/GlobalOpt/malloc-promote-3.ll
  vendor/llvm/dist/test/Transforms/Inline/crash.ll
  vendor/llvm/dist/test/Transforms/InstCombine/cast.ll
  vendor/llvm/dist/test/Transforms/InstCombine/crash.ll
  vendor/llvm/dist/test/Transforms/InstCombine/getelementptr.ll
  vendor/llvm/dist/test/Transforms/InstCombine/malloc-free-delete.ll
  vendor/llvm/dist/test/Transforms/InstCombine/malloc2.ll
  vendor/llvm/dist/test/Transforms/InstCombine/malloc3.ll
  vendor/llvm/dist/test/Transforms/JumpThreading/crash.ll
  vendor/llvm/dist/test/Transforms/SCCP/ipsccp-basic.ll
  vendor/llvm/dist/test/Transforms/SCCP/sccptest.ll
  vendor/llvm/dist/tools/gold/gold-plugin.cpp
  vendor/llvm/dist/tools/llc/llc.cpp
  vendor/llvm/dist/tools/lli/lli.cpp
  vendor/llvm/dist/tools/llvm-as/llvm-as.cpp
  vendor/llvm/dist/tools/llvm-ld/CMakeLists.txt
  vendor/llvm/dist/tools/llvm-ld/Makefile
  vendor/llvm/dist/tools/llvm-ld/llvm-ld.cpp
  vendor/llvm/dist/tools/llvm-mc/AsmParser.cpp
  vendor/llvm/dist/tools/llvm-prof/CMakeLists.txt
  vendor/llvm/dist/tools/llvm-prof/Makefile
  vendor/llvm/dist/tools/llvm-prof/llvm-prof.cpp
  vendor/llvm/dist/tools/llvmc/doc/LLVMC-Reference.rst
  vendor/llvm/dist/tools/llvmc/example/mcc16/driver/Main.cpp
  vendor/llvm/dist/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td
  vendor/llvm/dist/tools/llvmc/example/mcc16/plugins/PIC16Base/PluginMain.cpp
  vendor/llvm/dist/tools/llvmc/plugins/Base/Base.td.in
  vendor/llvm/dist/tools/opt/CMakeLists.txt
  vendor/llvm/dist/tools/opt/Makefile
  vendor/llvm/dist/tools/opt/opt.cpp
  vendor/llvm/dist/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp
  vendor/llvm/dist/unittests/ExecutionEngine/JIT/JITTest.cpp
  vendor/llvm/dist/unittests/Support/raw_ostream_test.cpp
  vendor/llvm/dist/utils/NewNightlyTest.pl
  vendor/llvm/dist/utils/TableGen/AsmWriterEmitter.cpp
  vendor/llvm/dist/utils/TableGen/ClangDiagnosticsEmitter.cpp
  vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.h
  vendor/llvm/dist/utils/TableGen/DAGISelEmitter.cpp
  vendor/llvm/dist/utils/TableGen/LLVMCConfigurationEmitter.cpp
  vendor/llvm/dist/utils/TableGen/LLVMCConfigurationEmitter.h
  vendor/llvm/dist/utils/TableGen/StringToOffsetTable.h
  vendor/llvm/dist/utils/buildit/GNUmakefile
  vendor/llvm/dist/utils/buildit/build_llvm
  vendor/llvm/dist/utils/emacs/tablegen-mode.el
  vendor/llvm/dist/utils/lit/LitConfig.py
  vendor/llvm/dist/utils/lit/TestFormats.py
  vendor/llvm/dist/utils/lit/TestRunner.py

Modified: vendor/llvm/dist/Makefile
==============================================================================
--- vendor/llvm/dist/Makefile	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/Makefile	Fri Oct 23 14:19:52 2009	(r198396)
@@ -19,6 +19,12 @@ LEVEL := .
 #
 # When cross-compiling, there are some things (tablegen) that need to
 # be build for the build system first.
+
+# If "RC_ProjectName" exists in the environment, and its value is
+# "llvmCore", then this is an "Apple-style" build; search for
+# "Apple-style" in the comments for more info.  Anything else is a
+# normal build.
+ifneq ($(RC_ProjectName),llvmCore)  # Normal build (not "Apple-style").
 ifeq ($(BUILD_DIRS_ONLY),1)
   DIRS := lib/System lib/Support utils
   OPTIONAL_DIRS :=
@@ -211,3 +217,9 @@ happiness: update all check unittests
 
 .NOTPARALLEL:
 
+else # Building "Apple-style."
+# In an Apple-style build, once configuration is done, lines marked
+# "Apple-style" are removed with sed!  Please don't remove these!
+# Look for the string "Apple-style" in utils/buildit/build_llvm.
+include $(shell find . -name GNUmakefile) # Building "Apple-style."
+endif # Building "Apple-style."

Modified: vendor/llvm/dist/Makefile.rules
==============================================================================
--- vendor/llvm/dist/Makefile.rules	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/Makefile.rules	Fri Oct 23 14:19:52 2009	(r198396)
@@ -1540,8 +1540,8 @@ $(ObjDir)/%GenCallingConv.inc.tmp : %.td
 	$(Verb) $(TableGen) -gen-callingconv -o $(call SYSPATH, $@) $<
 
 $(TARGET:%=$(ObjDir)/%GenIntrinsics.inc.tmp): \
-$(ObjDir)/%GenIntrinsics.inc.tmp : Intrinsics%.td $(ObjDir)/.dir
-	$(Echo) "Building $(<F) calling convention information with tblgen"
+$(ObjDir)/%GenIntrinsics.inc.tmp : %.td $(ObjDir)/.dir
+	$(Echo) "Building $(<F) intrinsics information with tblgen"
 	$(Verb) $(TableGen) -gen-tgt-intrinsic -o $(call SYSPATH, $@) $<
 
 clean-local::

Modified: vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake
==============================================================================
--- vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake	Fri Oct 23 14:19:52 2009	(r198396)
@@ -34,7 +34,7 @@ set(MSVC_LIB_DEPS_LLVMMC LLVMSupport LLV
 set(MSVC_LIB_DEPS_LLVMMSIL LLVMAnalysis LLVMCodeGen LLVMCore LLVMMSILInfo LLVMScalarOpts LLVMSupport LLVMSystem LLVMTarget LLVMTransformUtils LLVMipa)
 set(MSVC_LIB_DEPS_LLVMMSILInfo LLVMSupport)
 set(MSVC_LIB_DEPS_LLVMMSP430AsmPrinter LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMMSP430Info LLVMSupport LLVMSystem LLVMTarget)
-set(MSVC_LIB_DEPS_LLVMMSP430CodeGen LLVMCodeGen LLVMCore LLVMMC LLVMMSP430Info LLVMSelectionDAG LLVMSupport LLVMTarget)
+set(MSVC_LIB_DEPS_LLVMMSP430CodeGen LLVMCodeGen LLVMCore LLVMMC LLVMMSP430Info LLVMSelectionDAG LLVMSupport LLVMSystem LLVMTarget)
 set(MSVC_LIB_DEPS_LLVMMSP430Info LLVMSupport)
 set(MSVC_LIB_DEPS_LLVMMipsAsmPrinter LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMMipsCodeGen LLVMMipsInfo LLVMSupport LLVMSystem LLVMTarget)
 set(MSVC_LIB_DEPS_LLVMMipsCodeGen LLVMCodeGen LLVMCore LLVMMC LLVMMipsInfo LLVMSelectionDAG LLVMSupport LLVMSystem LLVMTarget)

Modified: vendor/llvm/dist/docs/CMake.html
==============================================================================
--- vendor/llvm/dist/docs/CMake.html	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/docs/CMake.html	Fri Oct 23 14:19:52 2009	(r198396)
@@ -209,7 +209,7 @@
   <dt><b>CMAKE_BUILD_TYPE</b>:STRING</dt>
 
   <dd>Sets the build type for <i>make</i> based generators. Possible
-    values are Release, Debug, RelWithDebInfo and MiniSizeRel. On
+    values are Release, Debug, RelWithDebInfo and MinSizeRel. On
     systems like Visual Studio the user sets the build type with the IDE
     settings.</dd>
 
@@ -260,7 +260,7 @@
   <dd>Build with threads support, if available. Defaults to ON.</dd>
 
   <dt><b>LLVM_ENABLE_ASSERTIONS</b>:BOOL</dt>
-  <dd>Enables code assertions. Defaults to ON if and only if
+  <dd>Enables code assertions. Defaults to OFF if and only if
     CMAKE_BUILD_TYPE is <i>Release</i>.</dd>
 
   <dt><b>LLVM_ENABLE_PIC</b>:BOOL</dt>

Modified: vendor/llvm/dist/docs/CommandGuide/FileCheck.pod
==============================================================================
--- vendor/llvm/dist/docs/CommandGuide/FileCheck.pod	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/docs/CommandGuide/FileCheck.pod	Fri Oct 23 14:19:52 2009	(r198396)
@@ -21,9 +21,6 @@ for matching multiple different inputs i
 The I<match-filename> file specifies the file that contains the patterns to
 match.  The file to verify is always read from standard input.
 
-The input and output of B<FileCheck> is beyond the scope of this short
-introduction. Please see the I<TestingGuide> page in the LLVM documentation.
-
 =head1 OPTIONS
 
 =over
@@ -58,6 +55,189 @@ If B<FileCheck> verifies that the file m
 with 0.  Otherwise, if not, or if an error occurs, it will exit with a non-zero
 value.
 
+=head1 TUTORIAL
+
+FileCheck is typically used from LLVM regression tests, being invoked on the RUN
+line of the test.  A simple example of using FileCheck from a RUN line looks
+like this:
+
+  ; RUN: llvm-as < %s | llc -march=x86-64 | FileCheck %s
+
+This syntax says to pipe the current file ("%s") into llvm-as, pipe that into
+llc, then pipe the output of llc into FileCheck.  This means that FileCheck will
+be verifying its standard input (the llc output) against the filename argument
+specified (the original .ll file specified by "%s").  To see how this works,
+lets look at the rest of the .ll file (after the RUN line):
+
+  define void @sub1(i32* %p, i32 %v) {
+  entry:
+  ; <b>CHECK: sub1:</b>
+  ; <b>CHECK: subl</b>
+          %0 = tail call i32 @llvm.atomic.load.sub.i32.p0i32(i32* %p, i32 %v)
+          ret void
+  }
+  
+  define void @inc4(i64* %p) {
+  entry:
+  ; <b>CHECK: inc4:</b>
+  ; <b>CHECK: incq</b>
+          %0 = tail call i64 @llvm.atomic.load.add.i64.p0i64(i64* %p, i64 1)
+          ret void
+  }
+
+Here you can see some "CHECK:" lines specified in comments.  Now you can see
+how the file is piped into llvm-as, then llc, and the machine code output is
+what we are verifying.  FileCheck checks the machine code output to verify that
+it matches what the "CHECK:" lines specify.
+
+The syntax of the CHECK: lines is very simple: they are fixed strings that
+must occur in order.  FileCheck defaults to ignoring horizontal whitespace
+differences (e.g. a space is allowed to match a tab) but otherwise, the contents
+of the CHECK: line is required to match some thing in the test file exactly.
+
+One nice thing about FileCheck (compared to grep) is that it allows merging
+test cases together into logical groups.  For example, because the test above
+is checking for the "sub1:" and "inc4:" labels, it will not match unless there
+is a "subl" in between those labels.  If it existed somewhere else in the file,
+that would not count: "grep subl" matches if subl exists anywhere in the
+file.
+
+
+
+=head2 The FileCheck -check-prefix option
+
+The FileCheck -check-prefix option allows multiple test configurations to be
+driven from one .ll file.  This is useful in many circumstances, for example,
+testing different architectural variants with llc.  Here's a simple example:
+
+  ; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin9 -mattr=sse41 \
+  ; RUN:              | <b>FileCheck %s -check-prefix=X32</b>
+  ; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin9 -mattr=sse41 \
+  ; RUN:              | <b>FileCheck %s -check-prefix=X64</b>
+
+  define <4 x i32> @pinsrd_1(i32 %s, <4 x i32> %tmp) nounwind {
+          %tmp1 = insertelement <4 x i32>; %tmp, i32 %s, i32 1
+          ret <4 x i32> %tmp1
+  ; <b>X32:</b> pinsrd_1:
+  ; <b>X32:</b>    pinsrd $1, 4(%esp), %xmm0
+  
+  ; <b>X64:</b> pinsrd_1:
+  ; <b>X64:</b>    pinsrd $1, %edi, %xmm0
+  }
+
+In this case, we're testing that we get the expected code generation with
+both 32-bit and 64-bit code generation.
+
+
+
+=head2 The "CHECK-NEXT:" directive
+
+Sometimes you want to match lines and would like to verify that matches
+happen on exactly consequtive lines with no other lines in between them.  In
+this case, you can use CHECK: and CHECK-NEXT: directives to specify this.  If
+you specified a custom check prefix, just use "<PREFIX>-NEXT:".  For
+example, something like this works as you'd expect:
+
+  define void @t2(<2 x double>* %r, <2 x double&gt;* %A, double %B) {
+	%tmp3 = load <2 x double&gt;* %A, align 16
+	%tmp7 = insertelement <2 x double&gt; undef, double %B, i32 0
+	%tmp9 = shufflevector <2 x double&gt; %tmp3,
+                              <2 x double&gt; %tmp7,
+                              <2 x i32&gt; < i32 0, i32 2 &gt;
+	store <2 x double&gt; %tmp9, <2 x double&gt;* %r, align 16
+	ret void
+        
+  ; <b>CHECK:</b> t2:
+  ; <b>CHECK:</b> 	movl	8(%esp), %eax
+  ; <b>CHECK-NEXT:</b> 	movapd	(%eax), %xmm0
+  ; <b>CHECK-NEXT:</b> 	movhpd	12(%esp), %xmm0
+  ; <b>CHECK-NEXT:</b> 	movl	4(%esp), %eax
+  ; <b>CHECK-NEXT:</b> 	movapd	%xmm0, (%eax)
+  ; <b>CHECK-NEXT:</b> 	ret
+  }
+
+CHECK-NEXT: directives reject the input unless there is exactly one newline
+between it an the previous directive.  A CHECK-NEXT cannot be the first
+directive in a file.
+
+
+
+=head2 The "CHECK-NOT:" directive
+
+The CHECK-NOT: directive is used to verify that a string doesn't occur
+between two matches (or the first match and the beginning of the file).  For
+example, to verify that a load is removed by a transformation, a test like this
+can be used:
+
+  define i8 @coerce_offset0(i32 %V, i32* %P) {
+    store i32 %V, i32* %P
+   
+    %P2 = bitcast i32* %P to i8*
+    %P3 = getelementptr i8* %P2, i32 2
+
+    %A = load i8* %P3
+    ret i8 %A
+  ; <b>CHECK:</b> @coerce_offset0
+  ; <b>CHECK-NOT:</b> load
+  ; <b>CHECK:</b> ret i8
+  }
+
+
+
+=head2 FileCheck Pattern Matching Syntax
+
+The CHECK: and CHECK-NOT: directives both take a pattern to match.  For most
+uses of FileCheck, fixed string matching is perfectly sufficient.  For some
+things, a more flexible form of matching is desired.  To support this, FileCheck
+allows you to specify regular expressions in matching strings, surrounded by
+double braces: B<{{yourregex}}>.  Because we want to use fixed string
+matching for a majority of what we do, FileCheck has been designed to support
+mixing and matching fixed string matching with regular expressions.  This allows
+you to write things like this:
+
+  ; CHECK: movhpd	<b>{{[0-9]+}}</b>(%esp), <b>{{%xmm[0-7]}}</b>
+
+In this case, any offset from the ESP register will be allowed, and any xmm
+register will be allowed.
+
+Because regular expressions are enclosed with double braces, they are
+visually distinct, and you don't need to use escape characters within the double
+braces like you would in C.  In the rare case that you want to match double
+braces explicitly from the input, you can use something ugly like
+B<{{[{][{]}}> as your pattern.
+
+
+
+=head2 FileCheck Variables
+
+It is often useful to match a pattern and then verify that it occurs again
+later in the file.  For codegen tests, this can be useful to allow any register,
+but verify that that register is used consistently later.  To do this, FileCheck
+allows named variables to be defined and substituted into patterns.  Here is a
+simple example:
+
+  ; CHECK: test5:
+  ; CHECK:    notw	<b>[[REGISTER:%[a-z]+]]</b>
+  ; CHECK:    andw	{{.*}}<b>[[REGISTER]]</b>
+
+The first check line matches a regex (<tt>%[a-z]+</tt>) and captures it into
+the variables "REGISTER".  The second line verifies that whatever is in REGISTER
+occurs later in the file after an "andw".  FileCheck variable references are
+always contained in <tt>[[ ]]</tt> pairs, are named, and their names can be
+formed with the regex "<tt>[a-zA-Z][a-zA-Z0-9]*</tt>".  If a colon follows the
+name, then it is a definition of the variable, if not, it is a use.
+
+FileCheck variables can be defined multiple times, and uses always get the
+latest value.  Note that variables are all read at the start of a "CHECK" line
+and are all defined at the end.  This means that if you have something like
+"<tt>CHECK: [[XYZ:.*]]x[[XYZ]]<tt>" that the check line will read the previous
+value of the XYZ variable and define a new one after the match is performed.  If
+you need to do something like this you can probably take advantage of the fact
+that FileCheck is not actually line-oriented when it matches, this allows you to
+define two separate CHECK lines that match on the same line.
+
+
+
 =head1 AUTHORS
 
 Maintained by The LLVM Team (L<http://llvm.org>).

Modified: vendor/llvm/dist/docs/CommandGuide/index.html
==============================================================================
--- vendor/llvm/dist/docs/CommandGuide/index.html	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/docs/CommandGuide/index.html	Fri Oct 23 14:19:52 2009	(r198396)
@@ -132,6 +132,8 @@ options) arguments to the tool you are i
     Flexible file verifier used extensively by the testing harness</li>
 <li><a href="/cmds/tblgen.html"><b>tblgen</b></a> -
     target description reader and generator</li>
+<li><a href="/cmds/lit.html"><b>lit</b></a> -
+    LLVM Integrated Tester, for running tests</li>
 
 </ul>
 </div>
@@ -146,7 +148,7 @@ options) arguments to the tool you are i
   src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
 
   <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2009-08-15 17:38:11 +0200 (Sat, 15 Aug 2009) $
+  Last modified: $Date: 2009-10-19 05:54:13 +0200 (Mon, 19 Oct 2009) $
 </address>
 
 </body>

Modified: vendor/llvm/dist/docs/GettingStarted.html
==============================================================================
--- vendor/llvm/dist/docs/GettingStarted.html	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/docs/GettingStarted.html	Fri Oct 23 14:19:52 2009	(r198396)
@@ -724,6 +724,7 @@ revision), you can checkout it from the 
 subdirectories of the '<tt>tags</tt>' directory:</p>
 
 <ul>
+<li>Release 2.6: <b>RELEASE_26</b></li>
 <li>Release 2.5: <b>RELEASE_25</b></li>
 <li>Release 2.4: <b>RELEASE_24</b></li>
 <li>Release 2.3: <b>RELEASE_23</b></li>
@@ -1635,7 +1636,7 @@ out:</p>
   <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.x10sys.com/rspencer/">Reid Spencer</a><br>
   <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2009-09-27 06:56:27 +0200 (Sun, 27 Sep 2009) $
+  Last modified: $Date: 2009-10-23 08:20:06 +0200 (Fri, 23 Oct 2009) $
 </address>
 </body>
 </html>

Modified: vendor/llvm/dist/docs/LangRef.html
==============================================================================
--- vendor/llvm/dist/docs/LangRef.html	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/docs/LangRef.html	Fri Oct 23 14:19:52 2009	(r198396)
@@ -2339,9 +2339,9 @@ has undefined behavior.</p>
    a special value.  This value represents the inline assembler as a string
    (containing the instructions to emit), a list of operand constraints (stored
    as a string), a flag that indicates whether or not the inline asm
-   expression has side effects, and a flag indicating whether the asm came
-   originally from an asm block.  An example inline assembler
-   expression is:</p>
+   expression has side effects, and a flag indicating whether the function
+   containing the asm needs to align its stack conservatively.  An example
+   inline assembler expression is:</p>
 
 <div class="doc_code">
 <pre>
@@ -2369,12 +2369,16 @@ call void asm sideeffect "eieio", ""()
 </pre>
 </div>
 
-<p>Inline asms derived from asm blocks are similarly marked with the
-   '<tt>msasm</tt>' keyword:</p>
+<p>In some cases inline asms will contain code that will not work unless the
+   stack is aligned in some way, such as calls or SSE instructions on x86,
+   yet will not contain code that does that alignment within the asm.
+   The compiler should make conservative assumptions about what the asm might
+   contain and should generate its usual stack alignment code in the prologue
+   if the '<tt>alignstack</tt>' keyword is present:</p>
 
 <div class="doc_code">
 <pre>
-call void asm msasm "eieio", ""()
+call void asm alignstack "eieio", ""()
 </pre>
 </div>
 
@@ -7274,7 +7278,7 @@ LLVM</a>.</p>
 
   <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2009-10-13 23:56:55 +0200 (Tue, 13 Oct 2009) $
+  Last modified: $Date: 2009-10-22 01:28:00 +0200 (Thu, 22 Oct 2009) $
 </address>
 
 </body>

Modified: vendor/llvm/dist/docs/ProgrammersManual.html
==============================================================================
--- vendor/llvm/dist/docs/ProgrammersManual.html	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/docs/ProgrammersManual.html	Fri Oct 23 14:19:52 2009	(r198396)
@@ -83,6 +83,7 @@ option</a></li>
       <li><a href="#dss_stringmap">"llvm/ADT/StringMap.h"</a></li>
       <li><a href="#dss_indexedmap">"llvm/ADT/IndexedMap.h"</a></li>
       <li><a href="#dss_densemap">"llvm/ADT/DenseMap.h"</a></li>
+      <li><a href="#dss_valuemap">"llvm/ADT/ValueMap.h"</a></li>
       <li><a href="#dss_map">&lt;map&gt;</a></li>
       <li><a href="#dss_othermap">Other Map-Like Container Options</a></li>
     </ul></li>
@@ -1492,6 +1493,23 @@ inserted into the map) that it needs int
 
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">
+  <a name="dss_valuemap">"llvm/ADT/ValueMap.h"</a>
+</div>
+
+<div class="doc_text">
+
+<p>
+ValueMap is a wrapper around a <a href="#dss_densemap">DenseMap</a> mapping
+Value*s (or subclasses) to another type.  When a Value is deleted or RAUW'ed,
+ValueMap will update itself so the new version of the key is mapped to the same
+value, just as if the key were a WeakVH.  You can configure exactly how this
+happens, and what else happens on these two events, by passing
+a <code>Config</code> parameter to the ValueMap template.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">
   <a name="dss_map">&lt;map&gt;</a>
 </div>
 
@@ -3854,7 +3872,7 @@ arguments. An argument has a pointer to 
   <a href="mailto:dhurjati at cs.uiuc.edu">Dinakar Dhurjati</a> and
   <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2009-10-12 16:46:08 +0200 (Mon, 12 Oct 2009) $
+  Last modified: $Date: 2009-10-23 00:11:22 +0200 (Fri, 23 Oct 2009) $
 </address>
 
 </body>

Modified: vendor/llvm/dist/docs/ReleaseNotes.html
==============================================================================
--- vendor/llvm/dist/docs/ReleaseNotes.html	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/docs/ReleaseNotes.html	Fri Oct 23 14:19:52 2009	(r198396)
@@ -246,7 +246,7 @@ KLEE.</p>
 <p>
 The goal of <a href="http://dragonegg.llvm.org/">DragonEgg</a> is to make
 gcc-4.5 act like llvm-gcc without requiring any gcc modifications whatsoever.
-<a href="http://dragonegg.llvm.org/">DragonEgg</a> is a shared library (llvm.so)
+<a href="http://dragonegg.llvm.org/">DragonEgg</a> is a shared library (dragonegg.so)
 that is loaded by gcc at runtime.  It uses the new gcc plugin architecture to
 disable the GCC optimizers and code generators, and schedule the LLVM optimizers
 and code generators (or direct output of LLVM IR) instead.  Currently only Linux
@@ -1025,7 +1025,7 @@ guide. For clients, the notable API chan
 <li>Intel and AMD machines running on Win32 using MinGW libraries (native).</li>
 <li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited
     support is available for native builds with Visual C++).</li>
-<li>Sun UltraSPARC workstations running Solaris 10.</li>
+<li>Sun x86 and AMD64 machines running Solaris 10, OpenSolaris 0906.</li>
 <li>Alpha-based machines running Debian GNU/Linux.</li>
 </ul>
 
@@ -1348,7 +1348,7 @@ lists</a>.</p>
   src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
 
   <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2009-10-13 19:48:04 +0200 (Tue, 13 Oct 2009) $
+  Last modified: $Date: 2009-10-16 18:30:58 +0200 (Fri, 16 Oct 2009) $
 </address>
 
 </body>

Modified: vendor/llvm/dist/examples/BrainF/BrainF.cpp
==============================================================================
--- vendor/llvm/dist/examples/BrainF/BrainF.cpp	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/examples/BrainF/BrainF.cpp	Fri Oct 23 14:19:52 2009	(r198396)
@@ -25,6 +25,7 @@
 
 #include "BrainF.h"
 #include "llvm/Constants.h"
+#include "llvm/Instructions.h"
 #include "llvm/Intrinsics.h"
 #include "llvm/ADT/STLExtras.h"
 #include <iostream>
@@ -78,7 +79,11 @@ void BrainF::header(LLVMContext& C) {
 
   //%arr = malloc i8, i32 %d
   ConstantInt *val_mem = ConstantInt::get(C, APInt(32, memtotal));
-  ptr_arr = builder->CreateMalloc(IntegerType::getInt8Ty(C), val_mem, "arr");
+  BasicBlock* BB = builder->GetInsertBlock();
+  const Type* IntPtrTy = IntegerType::getInt32Ty(C);
+  ptr_arr = CallInst::CreateMalloc(BB, IntPtrTy, IntegerType::getInt8Ty(C),
+                                   val_mem, NULL, "arr");
+  BB->getInstList().push_back(cast<Instruction>(ptr_arr));
 
   //call void @llvm.memset.i32(i8 *%arr, i8 0, i32 %d, i32 1)
   {

Modified: vendor/llvm/dist/include/llvm-c/Core.h
==============================================================================
--- vendor/llvm/dist/include/llvm-c/Core.h	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/include/llvm-c/Core.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -457,7 +457,6 @@ void LLVMDisposeTypeHandle(LLVMTypeHandl
     macro(UnaryInstruction)                 \
       macro(AllocationInst)                 \
         macro(AllocaInst)                   \
-        macro(MallocInst)                   \
       macro(CastInst)                       \
         macro(BitCastInst)                  \
         macro(FPExtInst)                    \

Modified: vendor/llvm/dist/include/llvm/ADT/APFloat.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/APFloat.h	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/include/llvm/ADT/APFloat.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -125,6 +125,7 @@ namespace llvm {
   public:
 
     /* We support the following floating point semantics.  */
+    static const fltSemantics IEEEhalf;
     static const fltSemantics IEEEsingle;
     static const fltSemantics IEEEdouble;
     static const fltSemantics IEEEquad;
@@ -321,12 +322,14 @@ namespace llvm {
     opStatus roundSignificandWithExponent(const integerPart *, unsigned int,
                                           int, roundingMode);
 
+    APInt convertHalfAPFloatToAPInt() const;
     APInt convertFloatAPFloatToAPInt() const;
     APInt convertDoubleAPFloatToAPInt() const;
     APInt convertQuadrupleAPFloatToAPInt() const;
     APInt convertF80LongDoubleAPFloatToAPInt() const;
     APInt convertPPCDoubleDoubleAPFloatToAPInt() const;
     void initFromAPInt(const APInt& api, bool isIEEE = false);
+    void initFromHalfAPInt(const APInt& api);
     void initFromFloatAPInt(const APInt& api);
     void initFromDoubleAPInt(const APInt& api);
     void initFromQuadrupleAPInt(const APInt &api);

Modified: vendor/llvm/dist/include/llvm/ADT/DenseMapInfo.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/DenseMapInfo.h	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/include/llvm/ADT/DenseMapInfo.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -76,7 +76,7 @@ template<> struct DenseMapInfo<unsigned 
   static inline unsigned long getEmptyKey() { return ~0UL; }
   static inline unsigned long getTombstoneKey() { return ~0UL - 1L; }
   static unsigned getHashValue(const unsigned long& Val) {
-    return Val * 37UL;
+    return (unsigned)(Val * 37UL);
   }
   static bool isPod() { return true; }
   static bool isEqual(const unsigned long& LHS, const unsigned long& RHS) {
@@ -89,7 +89,7 @@ template<> struct DenseMapInfo<unsigned 
   static inline unsigned long long getEmptyKey() { return ~0ULL; }
   static inline unsigned long long getTombstoneKey() { return ~0ULL - 1ULL; }
   static unsigned getHashValue(const unsigned long long& Val) {
-    return (unsigned)Val * 37ULL;
+    return (unsigned)(Val * 37ULL);
   }
   static bool isPod() { return true; }
   static bool isEqual(const unsigned long long& LHS,

Modified: vendor/llvm/dist/include/llvm/ADT/FoldingSet.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/FoldingSet.h	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/include/llvm/ADT/FoldingSet.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -19,7 +19,6 @@
 #include "llvm/Support/DataTypes.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/StringRef.h"
-#include <iterator>
 
 namespace llvm {
   class APFloat;

Modified: vendor/llvm/dist/include/llvm/ADT/StringExtras.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/StringExtras.h	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/include/llvm/ADT/StringExtras.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -16,6 +16,7 @@
 
 #include "llvm/Support/DataTypes.h"
 #include "llvm/ADT/APFloat.h"
+#include "llvm/ADT/StringRef.h"
 #include <cctype>
 #include <cstdio>
 #include <string>
@@ -216,14 +217,18 @@ void SplitString(const std::string &Sour
                  std::vector<std::string> &OutFragments,
                  const char *Delimiters = " \t\n\v\f\r");
 
-/// UnescapeString - Modify the argument string, turning two character sequences
-/// like '\\' 'n' into '\n'.  This handles: \e \a \b \f \n \r \t \v \' \\ and
-/// \num (where num is a 1-3 byte octal value).
-void UnescapeString(std::string &Str);
-
-/// EscapeString - Modify the argument string, turning '\\' and anything that
-/// doesn't satisfy std::isprint into an escape sequence.
-void EscapeString(std::string &Str);
+/// HashString - Hash funtion for strings.
+///
+/// This is the Bernstein hash function.
+//
+// FIXME: Investigate whether a modified bernstein hash function performs
+// better: http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx
+//   X*33+c -> X*33^c
+static inline unsigned HashString(StringRef Str, unsigned Result = 0) {
+  for (unsigned i = 0, e = Str.size(); i != e; ++i)
+    Result = Result * 33 + Str[i];
+  return Result;
+}
 
 } // End llvm namespace
 

Modified: vendor/llvm/dist/include/llvm/ADT/StringRef.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/StringRef.h	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/include/llvm/ADT/StringRef.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -29,7 +29,7 @@ namespace llvm {
     typedef const char *iterator;
     static const size_t npos = ~size_t(0);
     typedef size_t size_type;
-    
+
   private:
     /// The start of the string, in an external buffer.
     const char *Data;
@@ -45,15 +45,15 @@ namespace llvm {
     /*implicit*/ StringRef() : Data(0), Length(0) {}
 
     /// Construct a string ref from a cstring.
-    /*implicit*/ StringRef(const char *Str) 
+    /*implicit*/ StringRef(const char *Str)
       : Data(Str) { if (Str) Length = ::strlen(Str); else Length = 0; }
- 
+
     /// Construct a string ref from a pointer and length.
-    /*implicit*/ StringRef(const char *data, unsigned length)
+    /*implicit*/ StringRef(const char *data, size_t length)
       : Data(data), Length(length) {}
 
     /// Construct a string ref from an std::string.
-    /*implicit*/ StringRef(const std::string &Str) 
+    /*implicit*/ StringRef(const std::string &Str)
       : Data(Str.c_str()), Length(Str.length()) {}
 
     /// @}
@@ -83,7 +83,7 @@ namespace llvm {
       assert(!empty());
       return Data[0];
     }
-    
+
     /// back - Get the last character in the string.
     char back() const {
       assert(!empty());
@@ -93,7 +93,7 @@ namespace llvm {
     /// equals - Check for string equality, this is more efficient than
     /// compare() when the relative ordering of inequal strings isn't needed.
     bool equals(const StringRef &RHS) const {
-      return (Length == RHS.Length && 
+      return (Length == RHS.Length &&
               memcmp(Data, RHS.Data, RHS.Length) == 0);
     }
 
@@ -117,9 +117,9 @@ namespace llvm {
     /// @name Operator Overloads
     /// @{
 
-    char operator[](size_t Index) const { 
+    char operator[](size_t Index) const {
       assert(Index < Length && "Invalid index!");
-      return Data[Index]; 
+      return Data[Index];
     }
 
     /// @}
@@ -135,7 +135,7 @@ namespace llvm {
     /// @{
 
     /// startswith - Check if this string starts with the given \arg Prefix.
-    bool startswith(const StringRef &Prefix) const { 
+    bool startswith(const StringRef &Prefix) const {
       return substr(0, Prefix.Length).equals(Prefix);
     }
 
@@ -164,7 +164,7 @@ namespace llvm {
     /// \return - The index of the first occurence of \arg Str, or npos if not
     /// found.
     size_t find(const StringRef &Str) const;
-    
+
     /// rfind - Search for the last character \arg C in the string.
     ///
     /// \return - The index of the last occurence of \arg C, or npos if not
@@ -179,29 +179,29 @@ namespace llvm {
       }
       return npos;
     }
-    
+
     /// rfind - Search for the last string \arg Str in the string.
     ///
     /// \return - The index of the last occurence of \arg Str, or npos if not
     /// found.
     size_t rfind(const StringRef &Str) const;
-    
+
     /// find_first_of - Find the first instance of the specified character or
     /// return npos if not in string.  Same as find.
     size_type find_first_of(char C) const { return find(C); }
-    
+
     /// find_first_of - Find the first character from the string 'Chars' in the
     /// current string or return npos if not in string.
     size_type find_first_of(StringRef Chars) const;
-    
+
     /// find_first_not_of - Find the first character in the string that is not
     /// in the string 'Chars' or return npos if all are in string. Same as find.
     size_type find_first_not_of(StringRef Chars) const;
-    
+
     /// @}
     /// @name Helpful Algorithms
     /// @{
-    
+
     /// count - Return the number of occurrences of \arg C in the string.
     size_t count(char C) const {
       size_t Count = 0;
@@ -210,11 +210,11 @@ namespace llvm {
           ++Count;
       return Count;
     }
-    
+
     /// count - Return the number of non-overlapped occurrences of \arg Str in
     /// the string.
     size_t count(const StringRef &Str) const;
-    
+
     /// getAsInteger - Parse the current string as an integer of the specified
     /// radix.  If Radix is specified as zero, this does radix autosensing using
     /// extended C rules: 0 is octal, 0x is hex, 0b is binary.
@@ -229,7 +229,7 @@ namespace llvm {
     bool getAsInteger(unsigned Radix, unsigned &Result) const;
 
     // TODO: Provide overloads for int/unsigned that check for overflow.
-    
+
     /// @}
     /// @name Substring Operations
     /// @{
@@ -308,24 +308,24 @@ namespace llvm {
     return LHS.equals(RHS);
   }
 
-  inline bool operator!=(const StringRef &LHS, const StringRef &RHS) { 
+  inline bool operator!=(const StringRef &LHS, const StringRef &RHS) {
     return !(LHS == RHS);
   }
-  
+
   inline bool operator<(const StringRef &LHS, const StringRef &RHS) {
-    return LHS.compare(RHS) == -1; 
+    return LHS.compare(RHS) == -1;
   }
 
   inline bool operator<=(const StringRef &LHS, const StringRef &RHS) {
-    return LHS.compare(RHS) != 1; 
+    return LHS.compare(RHS) != 1;
   }
 
   inline bool operator>(const StringRef &LHS, const StringRef &RHS) {
-    return LHS.compare(RHS) == 1; 
+    return LHS.compare(RHS) == 1;
   }
 
   inline bool operator>=(const StringRef &LHS, const StringRef &RHS) {
-    return LHS.compare(RHS) != -1; 
+    return LHS.compare(RHS) != -1;
   }
 
   /// @}

Modified: vendor/llvm/dist/include/llvm/ADT/Triple.h
==============================================================================
--- vendor/llvm/dist/include/llvm/ADT/Triple.h	Fri Oct 23 14:06:25 2009	(r198395)
+++ vendor/llvm/dist/include/llvm/ADT/Triple.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -95,7 +95,8 @@ public:
     NetBSD,
     OpenBSD,
     Solaris,
-    Win32
+    Win32,
+    Haiku
   };
   
 private:

Added: vendor/llvm/dist/include/llvm/ADT/ValueMap.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ vendor/llvm/dist/include/llvm/ADT/ValueMap.h	Fri Oct 23 14:19:52 2009	(r198396)
@@ -0,0 +1,365 @@
+//===- llvm/ADT/ValueMap.h - Safe map from Values to data -------*- 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 ValueMap class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ADT_VALUEMAP_H
+#define LLVM_ADT_VALUEMAP_H
+
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/Support/ValueHandle.h"
+#include "llvm/Support/type_traits.h"
+#include "llvm/System/Mutex.h"
+
+#include <iterator>
+
+namespace llvm {
+
+template<typename KeyT, typename ValueT, typename Config, typename ValueInfoT>
+class ValueMapCallbackVH;
+
+template<typename DenseMapT, typename KeyT>
+class ValueMapIterator;
+template<typename DenseMapT, typename KeyT>
+class ValueMapConstIterator;
+
+template<typename KeyT>
+struct ValueMapConfig {
+  /// If FollowRAUW is true, the ValueMap will update mappings on RAUW. If it's
+  /// false, the ValueMap will leave the original mapping in place.
+  enum { FollowRAUW = true };
+
+  // All methods will be called with a first argument of type ExtraData.  The
+  // default implementations in this class take a templated first argument so
+  // that users' subclasses can use any type they want without having to
+  // override all the defaults.
+  struct ExtraData {};
+
+  template<typename ExtraDataT>
+  static void onRAUW(const ExtraDataT &Data, KeyT Old, KeyT New) {}
+  template<typename ExtraDataT>
+  static void onDeleted(const ExtraDataT &Data, KeyT Old) {}
+
+  /// Returns a mutex that should be acquired around any changes to the map.
+  /// This is only acquired from the CallbackVH (and held around calls to onRAUW
+  /// and onDeleted) and not inside other ValueMap methods.  NULL means that no
+  /// mutex is necessary.
+  template<typename ExtraDataT>
+  static sys::Mutex *getMutex(const ExtraDataT &Data) { return NULL; }
+};
+
+/// ValueMap maps Value* or any subclass to an arbitrary other
+/// type. It provides the DenseMap interface.  When the key values are
+/// deleted or RAUWed, ValueMap relies on the Config to decide what to
+/// do.  Config parameters should inherit from ValueMapConfig<KeyT> to
+/// get default implementations of all the methods ValueMap uses.
+///
+/// By default, when a key is RAUWed from V1 to V2, the old mapping
+/// V1->target is removed, and a new mapping V2->target is added.  If
+/// V2 already existed, its old target is overwritten.  When a key is
+/// deleted, its mapping is removed.  You can override Config to get
+/// called back on each event.
+template<typename KeyT, typename ValueT, typename Config = ValueMapConfig<KeyT>,
+         typename ValueInfoT = DenseMapInfo<ValueT> >
+class ValueMap {
+  friend class ValueMapCallbackVH<KeyT, ValueT, Config, ValueInfoT>;
+  typedef ValueMapCallbackVH<KeyT, ValueT, Config, ValueInfoT> ValueMapCVH;
+  typedef DenseMap<ValueMapCVH, ValueT, DenseMapInfo<ValueMapCVH>,
+                   ValueInfoT> MapT;
+  typedef typename Config::ExtraData ExtraData;
+  MapT Map;
+  ExtraData Data;
+public:
+  typedef KeyT key_type;
+  typedef ValueT mapped_type;
+  typedef std::pair<KeyT, ValueT> value_type;
+
+  ValueMap(const ValueMap& Other) : Map(Other.Map), Data(Other.Data) {}
+
+  explicit ValueMap(unsigned NumInitBuckets = 64)
+    : Map(NumInitBuckets), Data() {}
+  explicit ValueMap(const ExtraData &Data, unsigned NumInitBuckets = 64)
+    : Map(NumInitBuckets), Data(Data) {}
+
+  ~ValueMap() {}
+
+  typedef ValueMapIterator<MapT, KeyT> iterator;
+  typedef ValueMapConstIterator<MapT, KeyT> const_iterator;
+  inline iterator begin() { return iterator(Map.begin()); }
+  inline iterator end() { return iterator(Map.end()); }
+  inline const_iterator begin() const { return const_iterator(Map.begin()); }
+  inline const_iterator end() const { return const_iterator(Map.end()); }
+
+  bool empty() const { return Map.empty(); }
+  unsigned size() const { return Map.size(); }
+
+  /// Grow the map so that it has at least Size buckets. Does not shrink
+  void resize(size_t Size) { Map.resize(Size); }
+
+  void clear() { Map.clear(); }
+
+  /// count - Return true if the specified key is in the map.
+  bool count(const KeyT &Val) const {
+    return Map.count(Wrap(Val));
+  }
+
+  iterator find(const KeyT &Val) {
+    return iterator(Map.find(Wrap(Val)));
+  }
+  const_iterator find(const KeyT &Val) const {
+    return const_iterator(Map.find(Wrap(Val)));
+  }
+
+  /// lookup - Return the entry for the specified key, or a default
+  /// constructed value if no such entry exists.
+  ValueT lookup(const KeyT &Val) const {
+    return Map.lookup(Wrap(Val));
+  }
+
+  // Inserts key,value pair into the map if the key isn't already in the map.
+  // If the key is already in the map, it returns false and doesn't update the
+  // value.
+  std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
+    std::pair<typename MapT::iterator, bool> map_result=
+      Map.insert(std::make_pair(Wrap(KV.first), KV.second));
+    return std::make_pair(iterator(map_result.first), map_result.second);
+  }
+
+  /// insert - Range insertion of pairs.
+  template<typename InputIt>
+  void insert(InputIt I, InputIt E) {
+    for (; I != E; ++I)
+      insert(*I);
+  }
+
+
+  bool erase(const KeyT &Val) {
+    return Map.erase(Wrap(Val));
+  }
+  bool erase(iterator I) {
+    return Map.erase(I.base());
+  }
+
+  value_type& FindAndConstruct(const KeyT &Key) {
+    return Map.FindAndConstruct(Wrap(Key));
+  }
+
+  ValueT &operator[](const KeyT &Key) {
+    return Map[Wrap(Key)];
+  }
+
+  ValueMap& operator=(const ValueMap& Other) {
+    Map = Other.Map;
+    Data = Other.Data;
+    return *this;
+  }
+
+  /// isPointerIntoBucketsArray - Return true if the specified pointer points
+  /// somewhere into the ValueMap's array of buckets (i.e. either to a key or
+  /// value in the ValueMap).
+  bool isPointerIntoBucketsArray(const void *Ptr) const {
+    return Map.isPointerIntoBucketsArray(Ptr);
+  }
+
+  /// getPointerIntoBucketsArray() - Return an opaque pointer into the buckets
+  /// array.  In conjunction with the previous method, this can be used to
+  /// determine whether an insertion caused the ValueMap to reallocate.
+  const void *getPointerIntoBucketsArray() const {
+    return Map.getPointerIntoBucketsArray();
+  }
+
+private:
+  ValueMapCVH Wrap(KeyT key) const {
+    // The only way the resulting CallbackVH could try to modify *this (making
+    // the const_cast incorrect) is if it gets inserted into the map.  But then
+    // this function must have been called from a non-const method, making the
+    // const_cast ok.
+    return ValueMapCVH(key, const_cast<ValueMap*>(this));
+  }
+};
+
+template<typename KeyT, typename ValueT, typename Config, typename ValueInfoT>
+class ValueMapCallbackVH : public CallbackVH {
+  friend class ValueMap<KeyT, ValueT, Config, ValueInfoT>;
+  friend class DenseMapInfo<ValueMapCallbackVH>;
+  typedef ValueMap<KeyT, ValueT, Config, ValueInfoT> ValueMapT;
+  typedef typename llvm::remove_pointer<KeyT>::type KeySansPointerT;
+
+  ValueMapT *Map;
+
+  ValueMapCallbackVH(KeyT Key, ValueMapT *Map)
+      : CallbackVH(const_cast<Value*>(static_cast<const Value*>(Key))),
+        Map(Map) {}
+
+public:
+  KeyT Unwrap() const { return cast_or_null<KeySansPointerT>(getValPtr()); }
+
+  virtual void deleted() {
+    // Make a copy that won't get changed even when *this is destroyed.
+    ValueMapCallbackVH Copy(*this);
+    sys::Mutex *M = Config::getMutex(Copy.Map->Data);
+    if (M)
+      M->acquire();
+    Config::onDeleted(Copy.Map->Data, Copy.Unwrap());  // May destroy *this.
+    Copy.Map->Map.erase(Copy);  // Definitely destroys *this.
+    if (M)
+      M->release();
+  }
+  virtual void allUsesReplacedWith(Value *new_key) {
+    assert(isa<KeySansPointerT>(new_key) &&
+           "Invalid RAUW on key of ValueMap<>");
+    // Make a copy that won't get changed even when *this is destroyed.
+    ValueMapCallbackVH Copy(*this);
+    sys::Mutex *M = Config::getMutex(Copy.Map->Data);
+    if (M)
+      M->acquire();
+
+    KeyT typed_new_key = cast<KeySansPointerT>(new_key);
+    // Can destroy *this:
+    Config::onRAUW(Copy.Map->Data, Copy.Unwrap(), typed_new_key);
+    if (Config::FollowRAUW) {
+      typename ValueMapT::MapT::iterator I = Copy.Map->Map.find(Copy);
+      // I could == Copy.Map->Map.end() if the onRAUW callback already
+      // removed the old mapping.
+      if (I != Copy.Map->Map.end()) {
+        ValueT Target(I->second);
+        Copy.Map->Map.erase(I);  // Definitely destroys *this.
+        Copy.Map->insert(std::make_pair(typed_new_key, Target));
+      }
+    }
+    if (M)
+      M->release();
+  }
+};
+
+template<typename KeyT, typename ValueT, typename Config, typename ValueInfoT>
+struct DenseMapInfo<ValueMapCallbackVH<KeyT, ValueT, Config, ValueInfoT> > {
+  typedef ValueMapCallbackVH<KeyT, ValueT, Config, ValueInfoT> VH;
+  typedef DenseMapInfo<KeyT> PointerInfo;
+
+  static inline VH getEmptyKey() {
+    return VH(PointerInfo::getEmptyKey(), NULL);
+  }
+  static inline VH getTombstoneKey() {
+    return VH(PointerInfo::getTombstoneKey(), NULL);
+  }
+  static unsigned getHashValue(const VH &Val) {
+    return PointerInfo::getHashValue(Val.Unwrap());
+  }
+  static bool isEqual(const VH &LHS, const VH &RHS) {
+    return LHS == RHS;
+  }
+  static bool isPod() { return false; }
+};
+
+
+template<typename DenseMapT, typename KeyT>
+class ValueMapIterator :

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-all mailing list