svn commit: r200581 - in vendor/llvm/dist: . autoconf cmake/modules docs include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/Bitcode include/llvm/CodeGen include/llvm/CompilerDriver in...

Roman Divacky rdivacky at FreeBSD.org
Tue Dec 15 10:09:08 PST 2009


Author: rdivacky
Date: Tue Dec 15 18:09:07 2009
New Revision: 200581
URL: http://svn.freebsd.org/changeset/base/200581

Log:
  Update LLVM to 91430.

Added:
  vendor/llvm/dist/include/llvm/ADT/DeltaAlgorithm.h
  vendor/llvm/dist/include/llvm/Analysis/PHITransAddr.h
  vendor/llvm/dist/include/llvm/CodeGen/CalcSpillWeights.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineSSAUpdater.h
  vendor/llvm/dist/lib/Analysis/PHITransAddr.cpp
  vendor/llvm/dist/lib/CodeGen/CalcSpillWeights.cpp
  vendor/llvm/dist/lib/CodeGen/MachineSSAUpdater.cpp
  vendor/llvm/dist/lib/CodeGen/MaxStackAlignment.cpp
  vendor/llvm/dist/lib/Support/DeltaAlgorithm.cpp
  vendor/llvm/dist/test/CodeGen/ARM/2009-12-02-vtrn-undef.ll
  vendor/llvm/dist/test/CodeGen/ARM/inlineasm3.ll
  vendor/llvm/dist/test/CodeGen/MSP430/bit.ll
  vendor/llvm/dist/test/CodeGen/MSP430/setcc.ll
  vendor/llvm/dist/test/CodeGen/Thumb2/2009-12-01-LoopIVUsers.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-12-01-EarlyClobberBug.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-12-11-TLSNoRedZone.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-12-12-CoalescerBug.ll
  vendor/llvm/dist/test/CodeGen/X86/3addr-16bit.ll
  vendor/llvm/dist/test/CodeGen/X86/fastcc3struct.ll
  vendor/llvm/dist/test/CodeGen/X86/select-aggregate.ll
  vendor/llvm/dist/test/CodeGen/X86/setcc.ll
  vendor/llvm/dist/test/CodeGen/X86/splat-scalar-load.ll
  vendor/llvm/dist/test/CodeGen/X86/vec-trunc-store.ll
  vendor/llvm/dist/test/CodeGen/X86/vec_compare-2.ll
  vendor/llvm/dist/test/CodeGen/X86/vec_ext_inreg.ll
  vendor/llvm/dist/test/CodeGen/X86/zext-shl.ll
  vendor/llvm/dist/test/DebugInfo/2009-12-01-CurrentFn.ll
  vendor/llvm/dist/test/FrontendC++/weak-external.cpp
  vendor/llvm/dist/test/FrontendC/2009-12-07-BitFieldAlignment.c
  vendor/llvm/dist/test/LLVMC/AppendCmdHook.td
  vendor/llvm/dist/test/LLVMC/ForwardTransformedValue.td
  vendor/llvm/dist/test/LLVMC/ForwardValue.td
  vendor/llvm/dist/test/LLVMC/HookWithInFile.td
  vendor/llvm/dist/test/LLVMC/Init.td
  vendor/llvm/dist/test/LLVMC/OutputSuffixHook.td
  vendor/llvm/dist/test/Transforms/GVN/crash-no-aa.ll
  vendor/llvm/dist/test/Transforms/IndVarSimplify/indirectbr.ll
  vendor/llvm/dist/test/Transforms/InstCombine/sext.ll
  vendor/llvm/dist/test/Transforms/LICM/2009-12-10-LICM-Indbr-Crash.ll
  vendor/llvm/dist/tools/llvmc/plugins/Base/Hooks.cpp
  vendor/llvm/dist/unittests/ADT/DeltaAlgorithmTest.cpp
Deleted:
  vendor/llvm/dist/include/llvm/CodeGen/BreakCriticalMachineEdge.h
  vendor/llvm/dist/test/CodeGen/ARM/2008-11-19-ScavengerAssert.ll
  vendor/llvm/dist/test/DebugInfo/2008-10-17-C++DebugCrash.ll
  vendor/llvm/dist/test/DebugInfo/2008-11-05-InlinedFuncStart.ll
  vendor/llvm/dist/test/DebugInfo/2009-01-15-RecordVariableCrash.ll
  vendor/llvm/dist/test/DebugInfo/2009-02-18-DefaultScope-Crash.ll
  vendor/llvm/dist/test/DebugInfo/2009-06-12-Inline.ll
  vendor/llvm/dist/test/DebugInfo/2009-06-12-InlineFuncStart.ll
  vendor/llvm/dist/test/DebugInfo/2009-06-15-InlineFuncStart.ll
  vendor/llvm/dist/test/DebugInfo/2009-06-15-abstract_origin.ll
  vendor/llvm/dist/test/Transforms/DeadStoreElimination/lifetime-simple.ll
  vendor/llvm/dist/test/Transforms/GVN/rle-dominated.ll
  vendor/llvm/dist/test/Transforms/InstCombine/sext-misc.ll
  vendor/llvm/dist/test/Transforms/InstCombine/xor-demorgans.ll
Modified:
  vendor/llvm/dist/CMakeLists.txt
  vendor/llvm/dist/Makefile
  vendor/llvm/dist/Makefile.config.in
  vendor/llvm/dist/autoconf/configure.ac
  vendor/llvm/dist/cmake/modules/CheckAtomic.cmake
  vendor/llvm/dist/configure
  vendor/llvm/dist/docs/CompilerDriver.html
  vendor/llvm/dist/docs/GettingStarted.html
  vendor/llvm/dist/docs/LangRef.html
  vendor/llvm/dist/docs/Makefile
  vendor/llvm/dist/include/llvm/ADT/DenseMap.h
  vendor/llvm/dist/include/llvm/ADT/DenseMapInfo.h
  vendor/llvm/dist/include/llvm/ADT/DenseSet.h
  vendor/llvm/dist/include/llvm/ADT/ImmutableList.h
  vendor/llvm/dist/include/llvm/ADT/PointerIntPair.h
  vendor/llvm/dist/include/llvm/ADT/SmallVector.h
  vendor/llvm/dist/include/llvm/ADT/StringSwitch.h
  vendor/llvm/dist/include/llvm/ADT/ValueMap.h
  vendor/llvm/dist/include/llvm/ADT/ilist.h
  vendor/llvm/dist/include/llvm/Analysis/AliasSetTracker.h
  vendor/llvm/dist/include/llvm/Analysis/DebugInfo.h
  vendor/llvm/dist/include/llvm/Analysis/IVUsers.h
  vendor/llvm/dist/include/llvm/Analysis/LoopDependenceAnalysis.h
  vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h
  vendor/llvm/dist/include/llvm/Analysis/LoopPass.h
  vendor/llvm/dist/include/llvm/Analysis/MemoryDependenceAnalysis.h
  vendor/llvm/dist/include/llvm/Analysis/Passes.h
  vendor/llvm/dist/include/llvm/Analysis/ProfileInfo.h
  vendor/llvm/dist/include/llvm/Argument.h
  vendor/llvm/dist/include/llvm/Bitcode/Deserialize.h
  vendor/llvm/dist/include/llvm/CallingConv.h
  vendor/llvm/dist/include/llvm/CodeGen/DAGISelHeader.h
  vendor/llvm/dist/include/llvm/CodeGen/FastISel.h
  vendor/llvm/dist/include/llvm/CodeGen/LinkAllCodegenComponents.h
  vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h
  vendor/llvm/dist/include/llvm/CodeGen/LiveVariables.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineFrameInfo.h
  vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h
  vendor/llvm/dist/include/llvm/CodeGen/Passes.h
  vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h
  vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGISel.h
  vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h
  vendor/llvm/dist/include/llvm/CodeGen/SlotIndexes.h
  vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.h
  vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.td
  vendor/llvm/dist/include/llvm/CompilerDriver/Common.td
  vendor/llvm/dist/include/llvm/IntrinsicInst.h
  vendor/llvm/dist/include/llvm/Intrinsics.td
  vendor/llvm/dist/include/llvm/LinkAllVMCore.h
  vendor/llvm/dist/include/llvm/Pass.h
  vendor/llvm/dist/include/llvm/Support/CommandLine.h
  vendor/llvm/dist/include/llvm/Support/Compiler.h
  vendor/llvm/dist/include/llvm/Support/Debug.h
  vendor/llvm/dist/include/llvm/Support/DebugLoc.h
  vendor/llvm/dist/include/llvm/Support/ErrorHandling.h
  vendor/llvm/dist/include/llvm/Support/GetElementPtrTypeIterator.h
  vendor/llvm/dist/include/llvm/Support/IRBuilder.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/System/Atomic.h
  vendor/llvm/dist/include/llvm/System/DataTypes.h.cmake
  vendor/llvm/dist/include/llvm/System/DataTypes.h.in
  vendor/llvm/dist/include/llvm/Target/TargetData.h
  vendor/llvm/dist/include/llvm/Target/TargetInstrInfo.h
  vendor/llvm/dist/include/llvm/Target/TargetLowering.h
  vendor/llvm/dist/include/llvm/Target/TargetRegisterInfo.h
  vendor/llvm/dist/lib/Analysis/CMakeLists.txt
  vendor/llvm/dist/lib/Analysis/CaptureTracking.cpp
  vendor/llvm/dist/lib/Analysis/ConstantFolding.cpp
  vendor/llvm/dist/lib/Analysis/DebugInfo.cpp
  vendor/llvm/dist/lib/Analysis/IPA/Andersens.cpp
  vendor/llvm/dist/lib/Analysis/IVUsers.cpp
  vendor/llvm/dist/lib/Analysis/LoopInfo.cpp
  vendor/llvm/dist/lib/Analysis/MemoryDependenceAnalysis.cpp
  vendor/llvm/dist/lib/Analysis/ProfileEstimatorPass.cpp
  vendor/llvm/dist/lib/Analysis/ProfileInfo.cpp
  vendor/llvm/dist/lib/Analysis/ProfileInfoLoaderPass.cpp
  vendor/llvm/dist/lib/Analysis/ProfileVerifierPass.cpp
  vendor/llvm/dist/lib/Analysis/ScalarEvolutionExpander.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/Deserialize.cpp
  vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.cpp
  vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.h
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DIE.h
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.h
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.cpp
  vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.h
  vendor/llvm/dist/lib/CodeGen/BranchFolding.cpp
  vendor/llvm/dist/lib/CodeGen/CMakeLists.txt
  vendor/llvm/dist/lib/CodeGen/CodePlacementOpt.cpp
  vendor/llvm/dist/lib/CodeGen/CriticalAntiDepBreaker.cpp
  vendor/llvm/dist/lib/CodeGen/LLVMTargetMachine.cpp
  vendor/llvm/dist/lib/CodeGen/LiveInterval.cpp
  vendor/llvm/dist/lib/CodeGen/LiveIntervalAnalysis.cpp
  vendor/llvm/dist/lib/CodeGen/LiveVariables.cpp
  vendor/llvm/dist/lib/CodeGen/LowerSubregs.cpp
  vendor/llvm/dist/lib/CodeGen/MachineBasicBlock.cpp
  vendor/llvm/dist/lib/CodeGen/MachineFunction.cpp
  vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp
  vendor/llvm/dist/lib/CodeGen/MachineLoopInfo.cpp
  vendor/llvm/dist/lib/CodeGen/MachineVerifier.cpp
  vendor/llvm/dist/lib/CodeGen/PHIElimination.cpp
  vendor/llvm/dist/lib/CodeGen/PHIElimination.h
  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/RegAllocLinearScan.cpp
  vendor/llvm/dist/lib/CodeGen/RegAllocPBQP.cpp
  vendor/llvm/dist/lib/CodeGen/RegisterScavenging.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/FastISel.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
  vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp
  vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.cpp
  vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.h
  vendor/llvm/dist/lib/CodeGen/Spiller.cpp
  vendor/llvm/dist/lib/CodeGen/Spiller.h
  vendor/llvm/dist/lib/CodeGen/StackSlotColoring.cpp
  vendor/llvm/dist/lib/CodeGen/TailDuplication.cpp
  vendor/llvm/dist/lib/CodeGen/TargetInstrInfoImpl.cpp
  vendor/llvm/dist/lib/CodeGen/TwoAddressInstructionPass.cpp
  vendor/llvm/dist/lib/CodeGen/VirtRegRewriter.cpp
  vendor/llvm/dist/lib/ExecutionEngine/JIT/JIT.cpp
  vendor/llvm/dist/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp
  vendor/llvm/dist/lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp
  vendor/llvm/dist/lib/Support/CMakeLists.txt
  vendor/llvm/dist/lib/Support/CommandLine.cpp
  vendor/llvm/dist/lib/Support/MemoryBuffer.cpp
  vendor/llvm/dist/lib/Support/raw_ostream.cpp
  vendor/llvm/dist/lib/System/Atomic.cpp
  vendor/llvm/dist/lib/System/Host.cpp
  vendor/llvm/dist/lib/System/Unix/Path.inc
  vendor/llvm/dist/lib/Target/ARM/ARM.h
  vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.h
  vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMConstantIslandPass.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMExpandPseudoInsts.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h
  vendor/llvm/dist/lib/Target/ARM/ARMInstrFormats.td
  vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.h
  vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td
  vendor/llvm/dist/lib/Target/ARM/ARMInstrNEON.td
  vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb.td
  vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td
  vendor/llvm/dist/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
  vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp
  vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
  vendor/llvm/dist/lib/Target/ARM/NEONMoveFix.cpp
  vendor/llvm/dist/lib/Target/ARM/NEONPreAllocPass.cpp
  vendor/llvm/dist/lib/Target/ARM/Thumb1InstrInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/Thumb1InstrInfo.h
  vendor/llvm/dist/lib/Target/ARM/Thumb1RegisterInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.cpp
  vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.h
  vendor/llvm/dist/lib/Target/ARM/Thumb2SizeReduction.cpp
  vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.cpp
  vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.h
  vendor/llvm/dist/lib/Target/CBackend/CBackend.cpp
  vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.cpp
  vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.h
  vendor/llvm/dist/lib/Target/CppBackend/CPPBackend.cpp
  vendor/llvm/dist/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp
  vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.cpp
  vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.h
  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/MSP430MachineFunctionInfo.h
  vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.cpp
  vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.h
  vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp
  vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.h
  vendor/llvm/dist/lib/Target/README.txt
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.cpp
  vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.h
  vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.cpp
  vendor/llvm/dist/lib/Target/TargetData.cpp
  vendor/llvm/dist/lib/Target/X86/X86.h
  vendor/llvm/dist/lib/Target/X86/X86COFFMachineModuleInfo.h
  vendor/llvm/dist/lib/Target/X86/X86CallingConv.td
  vendor/llvm/dist/lib/Target/X86/X86FloatingPoint.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/X86InstrInfo.cpp
  vendor/llvm/dist/lib/Target/X86/X86InstrInfo.h
  vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td
  vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td
  vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.cpp
  vendor/llvm/dist/lib/Target/X86/X86Subtarget.cpp
  vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp
  vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.cpp
  vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.h
  vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp
  vendor/llvm/dist/lib/Transforms/Instrumentation/MaximumSpanningTree.h
  vendor/llvm/dist/lib/Transforms/Scalar/CodeGenPrepare.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/DeadStoreElimination.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/InstructionCombining.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/JumpThreading.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LICM.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/LoopUnswitch.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/SCCVN.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/ScalarReplAggregates.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/SimplifyHalfPowrLibCalls.cpp
  vendor/llvm/dist/lib/Transforms/Scalar/SimplifyLibCalls.cpp
  vendor/llvm/dist/lib/Transforms/Utils/BasicBlockUtils.cpp
  vendor/llvm/dist/lib/Transforms/Utils/Local.cpp
  vendor/llvm/dist/lib/Transforms/Utils/LowerSwitch.cpp
  vendor/llvm/dist/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
  vendor/llvm/dist/lib/Transforms/Utils/SSAUpdater.cpp
  vendor/llvm/dist/lib/Transforms/Utils/SimplifyCFG.cpp
  vendor/llvm/dist/lib/VMCore/AsmWriter.cpp
  vendor/llvm/dist/lib/VMCore/BasicBlock.cpp
  vendor/llvm/dist/lib/VMCore/Constants.cpp
  vendor/llvm/dist/lib/VMCore/Function.cpp
  vendor/llvm/dist/lib/VMCore/LLVMContextImpl.h
  vendor/llvm/dist/lib/VMCore/Pass.cpp
  vendor/llvm/dist/lib/VMCore/PassManager.cpp
  vendor/llvm/dist/test/Analysis/BasicAA/modref.ll
  vendor/llvm/dist/test/CMakeLists.txt
  vendor/llvm/dist/test/CodeGen/CellSPU/and_ops.ll
  vendor/llvm/dist/test/CodeGen/CellSPU/call_indirect.ll
  vendor/llvm/dist/test/CodeGen/Thumb2/large-stack.ll
  vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-spill-q.ll
  vendor/llvm/dist/test/CodeGen/X86/2007-01-08-InstrSched.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-09-10-SpillComments.ll
  vendor/llvm/dist/test/CodeGen/X86/2009-09-19-SchedCustomLoweringBug.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/tail-opts.ll
  vendor/llvm/dist/test/CodeGen/X86/tailcallstack64.ll
  vendor/llvm/dist/test/CodeGen/X86/unaligned-load.ll
  vendor/llvm/dist/test/CodeGen/X86/widen_arith-3.ll
  vendor/llvm/dist/test/FrontendC++/2006-11-06-StackTrace.cpp
  vendor/llvm/dist/test/FrontendC++/2006-11-30-NoCompileUnit.cpp
  vendor/llvm/dist/test/FrontendC++/2006-11-30-Pubnames.cpp
  vendor/llvm/dist/test/FrontendC++/2009-07-15-LineNumbers.cpp
  vendor/llvm/dist/test/FrontendC/2005-06-15-ExpandGotoInternalProblem.c
  vendor/llvm/dist/test/FrontendC/2005-09-24-AsmUserPrefix.c
  vendor/llvm/dist/test/FrontendC/2006-01-13-StackSave.c
  vendor/llvm/dist/test/FrontendC/2006-01-23-FileScopeAsm.c
  vendor/llvm/dist/test/FrontendC/2006-03-03-MissingInitializer.c
  vendor/llvm/dist/test/FrontendC/2007-01-24-InlineAsmCModifier.c
  vendor/llvm/dist/test/FrontendC/2007-04-11-InlineAsmStruct.c
  vendor/llvm/dist/test/FrontendC/2007-04-11-InlineAsmUnion.c
  vendor/llvm/dist/test/FrontendC/2007-04-11-InlineStorageClassC89.c
  vendor/llvm/dist/test/FrontendC/2007-04-11-InlineStorageClassC99.c
  vendor/llvm/dist/test/FrontendC/2007-08-01-LoadStoreAlign.c
  vendor/llvm/dist/test/FrontendC/2007-12-VarArrayDebug.c
  vendor/llvm/dist/test/FrontendC/2009-02-17-BitField-dbg.c
  vendor/llvm/dist/test/FrontendC/BasicInstrs.c
  vendor/llvm/dist/test/FrontendC/extern-weak.c
  vendor/llvm/dist/test/FrontendC/unaligned-memcpy.c
  vendor/llvm/dist/test/FrontendObjC/2009-08-17-DebugInfo.m
  vendor/llvm/dist/test/FrontendObjC/2009-11-30-Objc-ID.m
  vendor/llvm/dist/test/LLVMC/EmptyCompilationGraph.td
  vendor/llvm/dist/test/LLVMC/EnvParentheses.td
  vendor/llvm/dist/test/LLVMC/ExternOptions.td
  vendor/llvm/dist/test/LLVMC/ForwardAs.td
  vendor/llvm/dist/test/LLVMC/HookWithArguments.td
  vendor/llvm/dist/test/LLVMC/MultiValuedOption.td
  vendor/llvm/dist/test/LLVMC/MultipleCompilationGraphs.td
  vendor/llvm/dist/test/LLVMC/NoActions.td
  vendor/llvm/dist/test/LLVMC/NoCompilationGraph.td
  vendor/llvm/dist/test/LLVMC/OneOrMore.td
  vendor/llvm/dist/test/LLVMC/OptionPreprocessor.td
  vendor/llvm/dist/test/LLVMC/TestWarnings.td
  vendor/llvm/dist/test/Transforms/ConstProp/loads.ll
  vendor/llvm/dist/test/Transforms/DeadStoreElimination/const-pointers.ll
  vendor/llvm/dist/test/Transforms/GVN/crash.ll
  vendor/llvm/dist/test/Transforms/GVN/lifetime-simple.ll
  vendor/llvm/dist/test/Transforms/GVN/rle.ll
  vendor/llvm/dist/test/Transforms/GlobalOpt/2009-02-15-ResolveAlias.ll
  vendor/llvm/dist/test/Transforms/InstCombine/compare-signs.ll
  vendor/llvm/dist/test/Transforms/InstCombine/crash.ll
  vendor/llvm/dist/test/Transforms/JumpThreading/crash.ll
  vendor/llvm/dist/test/Unit/lit.cfg
  vendor/llvm/dist/test/lit.cfg
  vendor/llvm/dist/tools/llvmc/doc/LLVMC-Reference.rst
  vendor/llvm/dist/tools/llvmc/example/mcc16/plugins/PIC16Base/PIC16Base.td
  vendor/llvm/dist/tools/llvmc/plugins/Base/Base.td.in
  vendor/llvm/dist/tools/llvmc/plugins/Clang/Clang.td
  vendor/llvm/dist/tools/opt/opt.cpp
  vendor/llvm/dist/unittests/ExecutionEngine/JIT/JITTest.cpp
  vendor/llvm/dist/unittests/ExecutionEngine/JIT/Makefile
  vendor/llvm/dist/utils/NewNightlyTest.pl
  vendor/llvm/dist/utils/TableGen/CodeEmitterGen.cpp
  vendor/llvm/dist/utils/TableGen/CodeEmitterGen.h
  vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.h
  vendor/llvm/dist/utils/TableGen/LLVMCConfigurationEmitter.cpp
  vendor/llvm/dist/utils/TableGen/OptParserEmitter.cpp
  vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.cpp
  vendor/llvm/dist/utils/lit/lit.py

Modified: vendor/llvm/dist/CMakeLists.txt
==============================================================================
--- vendor/llvm/dist/CMakeLists.txt	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/CMakeLists.txt	Tue Dec 15 18:09:07 2009	(r200581)
@@ -191,7 +191,13 @@ set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LL
 add_llvm_definitions( -D__STDC_LIMIT_MACROS )
 add_llvm_definitions( -D__STDC_CONSTANT_MACROS )
 
-option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)
+# MSVC has a gazillion warnings with this.
+if( MSVC )
+  option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." OFF)
+else( MSVC )
+  option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)
+endif()
+
 option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)
 option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)
 

Modified: vendor/llvm/dist/Makefile
==============================================================================
--- vendor/llvm/dist/Makefile	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/Makefile	Tue Dec 15 18:09:07 2009	(r200581)
@@ -66,8 +66,7 @@ ifeq ($(MAKECMDGOALS),tools-only)
 endif
 
 ifeq ($(MAKECMDGOALS),install-clang)
-  DIRS := tools/clang/tools/driver tools/clang/tools/clang-cc \
-	tools/clang/lib/Headers tools/clang/docs
+  DIRS := tools/clang/tools/driver tools/clang/lib/Headers tools/clang/docs
   OPTIONAL_DIRS :=
   NO_INSTALL = 1
 endif

Modified: vendor/llvm/dist/Makefile.config.in
==============================================================================
--- vendor/llvm/dist/Makefile.config.in	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/Makefile.config.in	Tue Dec 15 18:09:07 2009	(r200581)
@@ -313,7 +313,7 @@ endif
 # Location of the plugin header file for gold.
 BINUTILS_INCDIR := @BINUTILS_INCDIR@
 
-C_INCLUDE_DIRS := @C_INCLUDE_DISR@
+C_INCLUDE_DIRS := @C_INCLUDE_DIRS@
 CXX_INCLUDE_ROOT := @CXX_INCLUDE_ROOT@
 CXX_INCLUDE_ARCH := @CXX_INCLUDE_ARCH@
 CXX_INCLUDE_32BIT_DIR = @CXX_INCLUDE_32BIT_DIR@

Modified: vendor/llvm/dist/autoconf/configure.ac
==============================================================================
--- vendor/llvm/dist/autoconf/configure.ac	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/autoconf/configure.ac	Tue Dec 15 18:09:07 2009	(r200581)
@@ -672,7 +672,7 @@ case "$withval" in
   *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
 esac
 
-AC_ARG_WITH(c-include-dir,
+AC_ARG_WITH(c-include-dirs,
   AS_HELP_STRING([--with-c-include-dirs],
     [Colon separated list of directories clang will search for headers]),,
     withval="")

Modified: vendor/llvm/dist/cmake/modules/CheckAtomic.cmake
==============================================================================
--- vendor/llvm/dist/cmake/modules/CheckAtomic.cmake	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/cmake/modules/CheckAtomic.cmake	Tue Dec 15 18:09:07 2009	(r200581)
@@ -1,14 +1,25 @@
 # atomic builtins are required for threading support.
 
 INCLUDE(CheckCXXSourceCompiles)
-	
+
 CHECK_CXX_SOURCE_COMPILES("
+#ifdef _MSC_VER
+#include <windows.h>
+#endif
 int main() {
+#ifdef _MSC_VER
+        volatile LONG val = 1;
+        MemoryBarrier();
+        InterlockedCompareExchange(&val, 0, 1);
+        InterlockedIncrement(&val);
+        InterlockedDecrement(&val);
+#else
         volatile unsigned long val = 1;
         __sync_synchronize();
         __sync_val_compare_and_swap(&val, 1, 0);
         __sync_add_and_fetch(&val, 1);
         __sync_sub_and_fetch(&val, 1);
+#endif
         return 0;
       }
 " LLVM_MULTITHREADED)

Modified: vendor/llvm/dist/configure
==============================================================================
--- vendor/llvm/dist/configure	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/configure	Tue Dec 15 18:09:07 2009	(r200581)
@@ -5286,9 +5286,9 @@ echo "$as_me: error: Invalid path for --
 esac
 
 
-# Check whether --with-c-include-dir was given.
-if test "${with_c_include_dir+set}" = set; then
-  withval=$with_c_include_dir;
+# Check whether --with-c-include-dirs was given.
+if test "${with_c_include_dirs+set}" = set; then
+  withval=$with_c_include_dirs;
 else
   withval=""
 fi

Modified: vendor/llvm/dist/docs/CompilerDriver.html
==============================================================================
--- vendor/llvm/dist/docs/CompilerDriver.html	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/docs/CompilerDriver.html	Tue Dec 15 18:09:07 2009	(r200581)
@@ -17,28 +17,28 @@ The ReST source lives in the directory '
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
 <ul class="simple">
-<li><a class="reference internal" href="#introduction" id="id4">Introduction</a></li>
-<li><a class="reference internal" href="#compiling-with-llvmc" id="id5">Compiling with LLVMC</a></li>
-<li><a class="reference internal" href="#predefined-options" id="id6">Predefined options</a></li>
-<li><a class="reference internal" href="#compiling-llvmc-plugins" id="id7">Compiling LLVMC plugins</a></li>
-<li><a class="reference internal" href="#compiling-standalone-llvmc-based-drivers" id="id8">Compiling standalone LLVMC-based drivers</a></li>
-<li><a class="reference internal" href="#customizing-llvmc-the-compilation-graph" id="id9">Customizing LLVMC: the compilation graph</a></li>
-<li><a class="reference internal" href="#describing-options" id="id10">Describing options</a><ul>
-<li><a class="reference internal" href="#external-options" id="id11">External options</a></li>
+<li><a class="reference internal" href="#introduction" id="id8">Introduction</a></li>
+<li><a class="reference internal" href="#compiling-with-llvmc" id="id9">Compiling with LLVMC</a></li>
+<li><a class="reference internal" href="#predefined-options" id="id10">Predefined options</a></li>
+<li><a class="reference internal" href="#compiling-llvmc-plugins" id="id11">Compiling LLVMC plugins</a></li>
+<li><a class="reference internal" href="#compiling-standalone-llvmc-based-drivers" id="id12">Compiling standalone LLVMC-based drivers</a></li>
+<li><a class="reference internal" href="#customizing-llvmc-the-compilation-graph" id="id13">Customizing LLVMC: the compilation graph</a></li>
+<li><a class="reference internal" href="#describing-options" id="id14">Describing options</a><ul>
+<li><a class="reference internal" href="#external-options" id="id15">External options</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#conditional-evaluation" id="id12">Conditional evaluation</a></li>
-<li><a class="reference internal" href="#writing-a-tool-description" id="id13">Writing a tool description</a><ul>
-<li><a class="reference internal" href="#actions" id="id14">Actions</a></li>
+<li><a class="reference internal" href="#conditional-evaluation" id="id16">Conditional evaluation</a></li>
+<li><a class="reference internal" href="#writing-a-tool-description" id="id17">Writing a tool description</a><ul>
+<li><a class="reference internal" href="#id5" id="id18">Actions</a></li>
 </ul>
 </li>
-<li><a class="reference internal" href="#language-map" id="id15">Language map</a></li>
-<li><a class="reference internal" href="#option-preprocessor" id="id16">Option preprocessor</a></li>
-<li><a class="reference internal" href="#more-advanced-topics" id="id17">More advanced topics</a><ul>
-<li><a class="reference internal" href="#hooks-and-environment-variables" id="id18">Hooks and environment variables</a></li>
-<li><a class="reference internal" href="#how-plugins-are-loaded" id="id19">How plugins are loaded</a></li>
-<li><a class="reference internal" href="#debugging" id="id20">Debugging</a></li>
-<li><a class="reference internal" href="#conditioning-on-the-executable-name" id="id21">Conditioning on the executable name</a></li>
+<li><a class="reference internal" href="#language-map" id="id19">Language map</a></li>
+<li><a class="reference internal" href="#option-preprocessor" id="id20">Option preprocessor</a></li>
+<li><a class="reference internal" href="#more-advanced-topics" id="id21">More advanced topics</a><ul>
+<li><a class="reference internal" href="#hooks-and-environment-variables" id="id22">Hooks and environment variables</a></li>
+<li><a class="reference internal" href="#how-plugins-are-loaded" id="id23">How plugins are loaded</a></li>
+<li><a class="reference internal" href="#debugging" id="id24">Debugging</a></li>
+<li><a class="reference internal" href="#conditioning-on-the-executable-name" id="id25">Conditioning on the executable name</a></li>
 </ul>
 </li>
 </ul>
@@ -46,7 +46,7 @@ The ReST source lives in the directory '
 <div class="doc_author">
 <p>Written by <a href="mailto:foldr at codedgers.com">Mikhail Glushenkov</a></p>
 </div><div class="section" id="introduction">
-<h1><a class="toc-backref" href="#id4">Introduction</a></h1>
+<h1><a class="toc-backref" href="#id8">Introduction</a></h1>
 <p>LLVMC is a generic compiler driver, designed to be customizable and
 extensible. It plays the same role for LLVM as the <tt class="docutils literal"><span class="pre">gcc</span></tt> program
 does for GCC - LLVMC's job is essentially to transform a set of input
@@ -63,7 +63,7 @@ example, as a build tool for game resour
 need to be familiar with it to customize LLVMC.</p>
 </div>
 <div class="section" id="compiling-with-llvmc">
-<h1><a class="toc-backref" href="#id5">Compiling with LLVMC</a></h1>
+<h1><a class="toc-backref" href="#id9">Compiling with LLVMC</a></h1>
 <p>LLVMC tries hard to be as compatible with <tt class="docutils literal"><span class="pre">gcc</span></tt> as possible,
 although there are some small differences. Most of the time, however,
 you shouldn't be able to notice them:</p>
@@ -100,7 +100,7 @@ hello
 possible to choose the <tt class="docutils literal"><span class="pre">clang</span></tt> compiler with the <tt class="docutils literal"><span class="pre">-clang</span></tt> option.</p>
 </div>
 <div class="section" id="predefined-options">
-<h1><a class="toc-backref" href="#id6">Predefined options</a></h1>
+<h1><a class="toc-backref" href="#id10">Predefined options</a></h1>
 <p>LLVMC has some built-in options that can't be overridden in the
 configuration libraries:</p>
 <ul class="simple">
@@ -137,7 +137,7 @@ their standard meaning.</li>
 </ul>
 </div>
 <div class="section" id="compiling-llvmc-plugins">
-<h1><a class="toc-backref" href="#id7">Compiling LLVMC plugins</a></h1>
+<h1><a class="toc-backref" href="#id11">Compiling LLVMC plugins</a></h1>
 <p>It's easiest to start working on your own LLVMC plugin by copying the
 skeleton project which lives under <tt class="docutils literal"><span class="pre">$LLVMC_DIR/plugins/Simple</span></tt>:</p>
 <pre class="literal-block">
@@ -176,7 +176,7 @@ $ llvmc -load $LLVM_DIR/Release/lib/plug
 </pre>
 </div>
 <div class="section" id="compiling-standalone-llvmc-based-drivers">
-<h1><a class="toc-backref" href="#id8">Compiling standalone LLVMC-based drivers</a></h1>
+<h1><a class="toc-backref" href="#id12">Compiling standalone LLVMC-based drivers</a></h1>
 <p>By default, the <tt class="docutils literal"><span class="pre">llvmc</span></tt> executable consists of a driver core plus several
 statically linked plugins (<tt class="docutils literal"><span class="pre">Base</span></tt> and <tt class="docutils literal"><span class="pre">Clang</span></tt> at the moment). You can
 produce a standalone LLVMC-based driver executable by linking the core with your
@@ -215,7 +215,7 @@ $ make LLVMC_BUILTIN_PLUGINS=&quot;&quot
 </pre>
 </div>
 <div class="section" id="customizing-llvmc-the-compilation-graph">
-<h1><a class="toc-backref" href="#id9">Customizing LLVMC: the compilation graph</a></h1>
+<h1><a class="toc-backref" href="#id13">Customizing LLVMC: the compilation graph</a></h1>
 <p>Each TableGen configuration file should include the common
 definitions:</p>
 <pre class="literal-block">
@@ -283,7 +283,7 @@ debugging), run <tt class="docutils lite
 <tt class="docutils literal"><span class="pre">gsview</span></tt> installed for this to work properly.</p>
 </div>
 <div class="section" id="describing-options">
-<h1><a class="toc-backref" href="#id10">Describing options</a></h1>
+<h1><a class="toc-backref" href="#id14">Describing options</a></h1>
 <p>Command-line options that the plugin supports are defined by using an
 <tt class="docutils literal"><span class="pre">OptionList</span></tt>:</p>
 <pre class="literal-block">
@@ -342,6 +342,11 @@ the <tt class="docutils literal"><span c
 output).</li>
 <li><tt class="docutils literal"><span class="pre">really_hidden</span></tt> - the option will not be mentioned in any help
 output.</li>
+<li><tt class="docutils literal"><span class="pre">comma_separated</span></tt> - Indicates that any commas specified for an option's
+value should be used to split the value up into multiple values for the
+option. This property is valid only for list options. In conjunction with
+<tt class="docutils literal"><span class="pre">forward_value</span></tt> can be used to implement option forwarding in style of
+gcc's <tt class="docutils literal"><span class="pre">-Wa,</span></tt>.</li>
 <li><tt class="docutils literal"><span class="pre">multi_val</span> <span class="pre">n</span></tt> - this option takes <em>n</em> arguments (can be useful in some
 special cases). Usage example: <tt class="docutils literal"><span class="pre">(parameter_list_option</span> <span class="pre">&quot;foo&quot;,</span> <span class="pre">(multi_val</span>
 <span class="pre">3))</span></tt>; the command-line syntax is '-foo a b c'. Only list options can have
@@ -352,13 +357,13 @@ parameter), or a boolean (if it is a swi
 <tt class="docutils literal"><span class="pre">true</span></tt> and <tt class="docutils literal"><span class="pre">false</span></tt>). List options can't have this attribute. Usage
 examples: <tt class="docutils literal"><span class="pre">(switch_option</span> <span class="pre">&quot;foo&quot;,</span> <span class="pre">(init</span> <span class="pre">true))</span></tt>; <tt class="docutils literal"><span class="pre">(prefix_option</span> <span class="pre">&quot;bar&quot;,</span>
 <span class="pre">(init</span> <span class="pre">&quot;baz&quot;))</span></tt>.</li>
-<li><tt class="docutils literal"><span class="pre">extern</span></tt> - this option is defined in some other plugin, see below.</li>
+<li><tt class="docutils literal"><span class="pre">extern</span></tt> - this option is defined in some other plugin, see <a class="reference internal" href="#extern">below</a>.</li>
 </ul>
 </blockquote>
 </li>
 </ul>
 <div class="section" id="external-options">
-<h2><a class="toc-backref" href="#id11">External options</a></h2>
+<span id="extern"></span><h2><a class="toc-backref" href="#id15">External options</a></h2>
 <p>Sometimes, when linking several plugins together, one plugin needs to
 access options defined in some other plugin. Because of the way
 options are implemented, such options must be marked as
@@ -374,7 +379,7 @@ ignored. See also the section on plugin 
 </div>
 </div>
 <div class="section" id="conditional-evaluation">
-<span id="case"></span><h1><a class="toc-backref" href="#id12">Conditional evaluation</a></h1>
+<span id="case"></span><h1><a class="toc-backref" href="#id16">Conditional evaluation</a></h1>
 <p>The 'case' construct is the main means by which programmability is
 achieved in LLVMC. It can be used to calculate edge weights, program
 actions and modify the shell commands to be executed. The 'case'
@@ -433,7 +438,7 @@ a given value.
 Example: <tt class="docutils literal"><span class="pre">(parameter_equals</span> <span class="pre">&quot;W&quot;,</span> <span class="pre">&quot;all&quot;)</span></tt>.</li>
 <li><tt class="docutils literal"><span class="pre">element_in_list</span></tt> - Returns true if a command-line parameter
 list contains a given value.
-Example: <tt class="docutils literal"><span class="pre">(parameter_in_list</span> <span class="pre">&quot;l&quot;,</span> <span class="pre">&quot;pthread&quot;)</span></tt>.</li>
+Example: <tt class="docutils literal"><span class="pre">(element_in_list</span> <span class="pre">&quot;l&quot;,</span> <span class="pre">&quot;pthread&quot;)</span></tt>.</li>
 <li><tt class="docutils literal"><span class="pre">input_languages_contain</span></tt> - Returns true if a given language
 belongs to the current input language set.
 Example: <tt class="docutils literal"><span class="pre">(input_languages_contain</span> <span class="pre">&quot;c++&quot;)</span></tt>.</li>
@@ -475,7 +480,7 @@ argument. Example: <tt class="docutils l
 </ul>
 </div>
 <div class="section" id="writing-a-tool-description">
-<h1><a class="toc-backref" href="#id13">Writing a tool description</a></h1>
+<h1><a class="toc-backref" href="#id17">Writing a tool description</a></h1>
 <p>As was said earlier, nodes in the compilation graph represent tools,
 which are described separately. A tool definition looks like this
 (taken from the <tt class="docutils literal"><span class="pre">include/llvm/CompilerDriver/Tools.td</span></tt> file):</p>
@@ -512,12 +517,12 @@ list of input files and joins them toget
 tools are passed to this tool.</li>
 <li><tt class="docutils literal"><span class="pre">actions</span></tt> - A single big <tt class="docutils literal"><span class="pre">case</span></tt> expression that specifies how
 this tool reacts on command-line options (described in more detail
-below).</li>
+<a class="reference internal" href="#actions">below</a>).</li>
 </ul>
 </li>
 </ul>
-<div class="section" id="actions">
-<h2><a class="toc-backref" href="#id14">Actions</a></h2>
+<div class="section" id="id5">
+<span id="actions"></span><h2><a class="toc-backref" href="#id18">Actions</a></h2>
 <p>A tool often needs to react to command-line options, and this is
 precisely what the <tt class="docutils literal"><span class="pre">actions</span></tt> property is for. The next example
 illustrates this feature:</p>
@@ -550,28 +555,31 @@ like a linker.</p>
 <li><p class="first">Possible actions:</p>
 <blockquote>
 <ul class="simple">
-<li><tt class="docutils literal"><span class="pre">append_cmd</span></tt> - append a string to the tool invocation
-command.
-Example: <tt class="docutils literal"><span class="pre">(case</span> <span class="pre">(switch_on</span> <span class="pre">&quot;pthread&quot;),</span> <span class="pre">(append_cmd</span>
-<span class="pre">&quot;-lpthread&quot;))</span></tt></li>
-<li><tt class="docutils literal"><span class="pre">error</span></tt> - exit with error.
+<li><tt class="docutils literal"><span class="pre">append_cmd</span></tt> - Append a string to the tool invocation command.
+Example: <tt class="docutils literal"><span class="pre">(case</span> <span class="pre">(switch_on</span> <span class="pre">&quot;pthread&quot;),</span> <span class="pre">(append_cmd</span> <span class="pre">&quot;-lpthread&quot;))</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">error</span></tt> - Exit with error.
 Example: <tt class="docutils literal"><span class="pre">(error</span> <span class="pre">&quot;Mixing</span> <span class="pre">-c</span> <span class="pre">and</span> <span class="pre">-S</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">allowed!&quot;)</span></tt>.</li>
-<li><tt class="docutils literal"><span class="pre">warning</span></tt> - print a warning.
+<li><tt class="docutils literal"><span class="pre">warning</span></tt> - Print a warning.
 Example: <tt class="docutils literal"><span class="pre">(warning</span> <span class="pre">&quot;Specifying</span> <span class="pre">both</span> <span class="pre">-O1</span> <span class="pre">and</span> <span class="pre">-O2</span> <span class="pre">is</span> <span class="pre">meaningless!&quot;)</span></tt>.</li>
-<li><tt class="docutils literal"><span class="pre">forward</span></tt> - forward an option unchanged.  Example: <tt class="docutils literal"><span class="pre">(forward</span> <span class="pre">&quot;Wall&quot;)</span></tt>.</li>
-<li><tt class="docutils literal"><span class="pre">forward_as</span></tt> - Change the name of an option, but forward the
-argument unchanged.
+<li><tt class="docutils literal"><span class="pre">forward</span></tt> - Forward the option unchanged.
+Example: <tt class="docutils literal"><span class="pre">(forward</span> <span class="pre">&quot;Wall&quot;)</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">forward_as</span></tt> - Change the option's name, but forward the argument
+unchanged.
 Example: <tt class="docutils literal"><span class="pre">(forward_as</span> <span class="pre">&quot;O0&quot;,</span> <span class="pre">&quot;--disable-optimization&quot;)</span></tt>.</li>
-<li><tt class="docutils literal"><span class="pre">output_suffix</span></tt> - modify the output suffix of this
-tool.
+<li><tt class="docutils literal"><span class="pre">forward_value</span></tt> - Forward only option's value. Cannot be used with switch
+options (since they don't have values), but works fine with lists.
+Example: <tt class="docutils literal"><span class="pre">(forward_value</span> <span class="pre">&quot;Wa,&quot;)</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">forward_transformed_value</span></tt> - As above, but applies a hook to the
+option's value before forwarding (see <a class="reference internal" href="#hooks">below</a>). When
+<tt class="docutils literal"><span class="pre">forward_transformed_value</span></tt> is applied to a list
+option, the hook must have signature
+<tt class="docutils literal"><span class="pre">std::string</span> <span class="pre">hooks::HookName</span> <span class="pre">(const</span> <span class="pre">std::vector&lt;std::string&gt;&amp;)</span></tt>.
+Example: <tt class="docutils literal"><span class="pre">(forward_transformed_value</span> <span class="pre">&quot;m&quot;,</span> <span class="pre">&quot;ConvertToMAttr&quot;)</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">output_suffix</span></tt> - Modify the output suffix of this tool.
 Example: <tt class="docutils literal"><span class="pre">(output_suffix</span> <span class="pre">&quot;i&quot;)</span></tt>.</li>
-<li><tt class="docutils literal"><span class="pre">stop_compilation</span></tt> - stop compilation after this tool processes
-its input. Used without arguments.</li>
-<li><tt class="docutils literal"><span class="pre">unpack_values</span></tt> - used for for splitting and forwarding
-comma-separated lists of options, e.g. <tt class="docutils literal"><span class="pre">-Wa,-foo=bar,-baz</span></tt> is
-converted to <tt class="docutils literal"><span class="pre">-foo=bar</span> <span class="pre">-baz</span></tt> and appended to the tool invocation
-command.
-Example: <tt class="docutils literal"><span class="pre">(unpack_values</span> <span class="pre">&quot;Wa,&quot;)</span></tt>.</li>
+<li><tt class="docutils literal"><span class="pre">stop_compilation</span></tt> - Stop compilation after this tool processes its
+input. Used without arguments.
+Example: <tt class="docutils literal"><span class="pre">(stop_compilation)</span></tt>.</li>
 </ul>
 </blockquote>
 </li>
@@ -579,7 +587,7 @@ Example: <tt class="docutils literal"><s
 </div>
 </div>
 <div class="section" id="language-map">
-<h1><a class="toc-backref" href="#id15">Language map</a></h1>
+<h1><a class="toc-backref" href="#id19">Language map</a></h1>
 <p>If you are adding support for a new language to LLVMC, you'll need to
 modify the language map, which defines mappings from file extensions
 to language names. It is used to choose the proper toolchain(s) for a
@@ -602,7 +610,7 @@ multiple output languages, for nodes &qu
 output languages should match. This is enforced at compile-time.</p>
 </div>
 <div class="section" id="option-preprocessor">
-<h1><a class="toc-backref" href="#id16">Option preprocessor</a></h1>
+<h1><a class="toc-backref" href="#id20">Option preprocessor</a></h1>
 <p>It is sometimes useful to run error-checking code before processing the
 compilation graph. For example, if optimization options &quot;-O1&quot; and &quot;-O2&quot; are
 implemented as switches, we might want to output a warning if the user invokes
@@ -629,9 +637,9 @@ in <tt class="docutils literal"><span cl
 convenience, <tt class="docutils literal"><span class="pre">unset_option</span></tt> also works on lists.</p>
 </div>
 <div class="section" id="more-advanced-topics">
-<h1><a class="toc-backref" href="#id17">More advanced topics</a></h1>
+<h1><a class="toc-backref" href="#id21">More advanced topics</a></h1>
 <div class="section" id="hooks-and-environment-variables">
-<span id="hooks"></span><h2><a class="toc-backref" href="#id18">Hooks and environment variables</a></h2>
+<span id="hooks"></span><h2><a class="toc-backref" href="#id22">Hooks and environment variables</a></h2>
 <p>Normally, LLVMC executes programs from the system <tt class="docutils literal"><span class="pre">PATH</span></tt>. Sometimes,
 this is not sufficient: for example, we may want to specify tool paths
 or names in the configuration file. This can be easily achieved via
@@ -664,7 +672,7 @@ the <tt class="docutils literal"><span c
 </pre>
 </div>
 <div class="section" id="how-plugins-are-loaded">
-<span id="priorities"></span><h2><a class="toc-backref" href="#id19">How plugins are loaded</a></h2>
+<span id="priorities"></span><h2><a class="toc-backref" href="#id23">How plugins are loaded</a></h2>
 <p>It is possible for LLVMC plugins to depend on each other. For example,
 one can create edges between nodes defined in some other plugin. To
 make this work, however, that plugin should be loaded first. To
@@ -680,7 +688,7 @@ with 0. Therefore, the plugin with the h
 loaded last.</p>
 </div>
 <div class="section" id="debugging">
-<h2><a class="toc-backref" href="#id20">Debugging</a></h2>
+<h2><a class="toc-backref" href="#id24">Debugging</a></h2>
 <p>When writing LLVMC plugins, it can be useful to get a visual view of
 the resulting compilation graph. This can be achieved via the command
 line option <tt class="docutils literal"><span class="pre">--view-graph</span></tt>. This command assumes that <a class="reference external" href="http://www.graphviz.org/">Graphviz</a> and
@@ -696,7 +704,7 @@ perform any compilation tasks and return
 errors as its status code.</p>
 </div>
 <div class="section" id="conditioning-on-the-executable-name">
-<h2><a class="toc-backref" href="#id21">Conditioning on the executable name</a></h2>
+<h2><a class="toc-backref" href="#id25">Conditioning on the executable name</a></h2>
 <p>For now, the executable name (the value passed to the driver in <tt class="docutils literal"><span class="pre">argv[0]</span></tt>) is
 accessible only in the C++ code (i.e. hooks). Use the following code:</p>
 <pre class="literal-block">
@@ -704,12 +712,16 @@ namespace llvmc {
 extern const char* ProgramName;
 }
 
+namespace hooks {
+
 std::string MyHook() {
 //...
 if (strcmp(ProgramName, &quot;mydriver&quot;) == 0) {
    //...
 
 }
+
+} // end namespace hooks
 </pre>
 <p>In general, you're encouraged not to make the behaviour dependent on the
 executable file name, and use command-line switches instead. See for example how
@@ -727,7 +739,7 @@ the <tt class="docutils literal"><span c
 <a href="mailto:foldr at codedgers.com">Mikhail Glushenkov</a><br />
 <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br />
 
-Last modified: $Date: 2009-10-26 02:35:46 +0100 (Mon, 26 Oct 2009) $
+Last modified: $Date: 2009-12-07 19:26:24 +0100 (Mon, 07 Dec 2009) $
 </address></div>
 </div>
 </div>

Modified: vendor/llvm/dist/docs/GettingStarted.html
==============================================================================
--- vendor/llvm/dist/docs/GettingStarted.html	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/docs/GettingStarted.html	Tue Dec 15 18:09:07 2009	(r200581)
@@ -252,7 +252,8 @@ software you will need.</p>
 </tr>
 <tr>
   <td>Cygwin/Win32</td>
-  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a></sup></td>
+  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a>,
+     <a href="#pf_11">11</a></sup></td>
   <td>GCC 3.4.X, binutils 2.15</td>
 </tr>
 <tr>
@@ -331,6 +332,9 @@ up</a></li>
     before any Windows-based versions such as Strawberry Perl and
     ActivePerl, as these have Windows-specifics that will cause the
     build to fail.</a></li>
+<li><a name="pf_11">In general, LLVM modules requiring dynamic linking can
+    not be built on Windows. However, you can build LLVM tools using
+    <i>"make tools-only"</i>.</li>
 </ol>
 </div>
 
@@ -1636,7 +1640,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-11-04 07:15:28 +0100 (Wed, 04 Nov 2009) $
+  Last modified: $Date: 2009-12-09 18:26:02 +0100 (Wed, 09 Dec 2009) $
 </address>
 </body>
 </html>

Modified: vendor/llvm/dist/docs/LangRef.html
==============================================================================
--- vendor/llvm/dist/docs/LangRef.html	Tue Dec 15 16:15:14 2009	(r200580)
+++ vendor/llvm/dist/docs/LangRef.html	Tue Dec 15 18:09:07 2009	(r200581)
@@ -5,7 +5,7 @@
   <title>LLVM Assembly Language Reference Manual</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <meta name="author" content="Chris Lattner">
-  <meta name="description" 
+  <meta name="description"
   content="LLVM Assembly Language Reference Manual.">
   <link rel="stylesheet" href="llvm.css" type="text/css">
 </head>
@@ -54,7 +54,7 @@
   <li><a href="#typesystem">Type System</a>
     <ol>
       <li><a href="#t_classifications">Type Classifications</a></li>
-      <li><a href="#t_primitive">Primitive Types</a>    
+      <li><a href="#t_primitive">Primitive Types</a>
         <ol>
           <li><a href="#t_integer">Integer Type</a></li>
           <li><a href="#t_floating">Floating Point Types</a></li>
@@ -576,7 +576,7 @@ define i32 @main() {                    
       Symbols with "<tt>common</tt>" linkage are merged in the same way as
       <tt>weak symbols</tt>, and they may not be deleted if unreferenced.
       <tt>common</tt> symbols may not have an explicit section,
-      must have a zero initializer, and may not be marked '<a 
+      must have a zero initializer, and may not be marked '<a
       href="#globalvars"><tt>constant</tt></a>'.  Functions and aliases may not
       have common linkage.</dd>
 
@@ -843,7 +843,7 @@ define i32 @main() {                    
 
 <p>LLVM function declarations consist of the "<tt>declare</tt>" keyword, an
    optional <a href="#linkage">linkage type</a>, an optional
-   <a href="#visibility">visibility style</a>, an optional 
+   <a href="#visibility">visibility style</a>, an optional
    <a href="#callingconv">calling convention</a>, a return type, an optional
    <a href="#paramattrs">parameter attribute</a> for the return type, a function
    name, a possibly empty list of arguments, an optional alignment, and an
@@ -1192,7 +1192,7 @@ target datalayout = "<i>layout specifica
       location.</dd>
 
   <dt><tt>p:<i>size</i>:<i>abi</i>:<i>pref</i></tt></dt>
-  <dd>This specifies the <i>size</i> of a pointer and its <i>abi</i> and 
+  <dd>This specifies the <i>size</i> of a pointer and its <i>abi</i> and
       <i>preferred</i> alignments. All sizes are in bits. Specifying
       the <i>pref</i> alignment is optional. If omitted, the
       preceding <tt>:</tt> should be omitted too.</dd>
@@ -1202,11 +1202,11 @@ target datalayout = "<i>layout specifica
       <i>size</i>. The value of <i>size</i> must be in the range [1,2^23).</dd>
 
   <dt><tt>v<i>size</i>:<i>abi</i>:<i>pref</i></tt></dt>
-  <dd>This specifies the alignment for a vector type of a given bit 
+  <dd>This specifies the alignment for a vector type of a given bit
       <i>size</i>.</dd>
 
   <dt><tt>f<i>size</i>:<i>abi</i>:<i>pref</i></tt></dt>
-  <dd>This specifies the alignment for a floating point type of a given bit 
+  <dd>This specifies the alignment for a floating point type of a given bit
       <i>size</i>. The value of <i>size</i> must be either 32 (float) or 64
       (double).</dd>
 
@@ -1222,7 +1222,7 @@ target datalayout = "<i>layout specifica
   <dd>This specifies a set of native integer widths for the target CPU
       in bits.  For example, it might contain "n32" for 32-bit PowerPC,
       "n32:64" for PowerPC 64, or "n8:16:32:64" for X86-64.  Elements of
-      this set are considered to support most general arithmetic 
+      this set are considered to support most general arithmetic
       operations efficiently.</dd>
 </dl>
 
@@ -1616,16 +1616,16 @@ Classifications</a> </div>
   </tr><tr class="layout">
     <td class="left"><tt>float&nbsp;(i16&nbsp;signext,&nbsp;i32&nbsp;*)&nbsp;*
     </tt></td>
-    <td class="left"><a href="#t_pointer">Pointer</a> to a function that takes 
-      an <tt>i16</tt> that should be sign extended and a 
-      <a href="#t_pointer">pointer</a> to <tt>i32</tt>, returning 
+    <td class="left"><a href="#t_pointer">Pointer</a> to a function that takes
+      an <tt>i16</tt> that should be sign extended and a
+      <a href="#t_pointer">pointer</a> to <tt>i32</tt>, returning
       <tt>float</tt>.
     </td>
   </tr><tr class="layout">
     <td class="left"><tt>i32 (i8*, ...)</tt></td>
-    <td class="left">A vararg function that takes at least one 
-      <a href="#t_pointer">pointer</a> to <tt>i8 </tt> (char in C), 
-      which returns an integer.  This is the signature for <tt>printf</tt> in 
+    <td class="left">A vararg function that takes at least one
+      <a href="#t_pointer">pointer</a> to <tt>i8 </tt> (char in C),
+      which returns an integer.  This is the signature for <tt>printf</tt> in
       LLVM.
     </td>
   </tr><tr class="layout">
@@ -2054,9 +2054,9 @@ Unsafe:
 For example, if "%X" has a zero bit, then the output of the 'and' operation will
 always be a zero, no matter what the corresponding bit from the undef is.  As
 such, it is unsafe to optimize or assume that the result of the and is undef.
-However, it is safe to assume that all bits of the undef could be 0, and 
-optimize the and to 0.  Likewise, it is safe to assume that all the bits of 
-the undef operand to the or could be set, allowing the or to be folded to 
+However, it is safe to assume that all bits of the undef could be 0, and
+optimize the and to 0.  Likewise, it is safe to assume that all the bits of
+the undef operand to the or could be set, allowing the or to be folded to
 -1.</p>
 
 <div class="doc_code">
@@ -2086,7 +2086,7 @@ the optimizer is allowed to assume that 
 <div class="doc_code">
 <pre>
   %A = xor undef, undef
-  
+
   %B = undef
   %C = xor %B, %B
 
@@ -2137,7 +2137,7 @@ does not execute at all.  This allows us
 it: since the undefined operation "can't happen", the optimizer can assume that
 it occurs in dead code.
 </p>
- 
+
 <div class="doc_code">
 <pre>
 a:  store undef -> %X
@@ -2149,7 +2149,7 @@ b: unreachable
 </div>
 
 <p>These examples reiterate the fdiv example: a store "of" an undefined value
-can be assumed to not have any effect: we can assume that the value is 
+can be assumed to not have any effect: we can assume that the value is
 overwritten with bits that happen to match what was already there.  However, a
 store "to" an undefined location could clobber arbitrary memory, therefore, it
 has undefined behavior.</p>
@@ -2166,7 +2166,7 @@ has undefined behavior.</p>
 <p>The '<tt>blockaddress</tt>' constant computes the address of the specified
    basic block in the specified function, and always has an i8* type.  Taking
    the address of the entry block is illegal.</p>
-     
+
 <p>This value only has defined behavior when used as an operand to the
    '<a href="#i_indirectbr"><tt>indirectbr</tt></a>' instruction or for comparisons
    against null.  Pointer equality tests between labels addresses is undefined
@@ -2175,7 +2175,7 @@ has undefined behavior.</p>
    pointer sized value as long as the bits are not inspected.  This allows
    <tt>ptrtoint</tt> and arithmetic to be performed on these values so long as
    the original value is reconstituted before the <tt>indirectbr</tt>.</p>
-   
+
 <p>Finally, some targets may provide defined semantics when
    using the value as the operand to an inline assembly, but that is target
    specific.
@@ -2703,7 +2703,7 @@ IfUnequal:
    rest of the arguments indicate the full set of possible destinations that the
    address may point to.  Blocks are allowed to occur multiple times in the
    destination list, though this isn't particularly useful.</p>
-   
+
 <p>This destination list is required so that dataflow analysis has an accurate
    understanding of the CFG.</p>
 
@@ -3060,7 +3060,7 @@ Instruction</a> </div>
 <p>The two arguments to the '<tt>mul</tt>' instruction must
    be <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of
    integer values.  Both arguments must have identical types.</p>
- 
+
 <h5>Semantics:</h5>
 <p>The value produced is the integer product of the two operands.</p>
 
@@ -3132,7 +3132,7 @@ Instruction</a> </div>
 <p>The '<tt>udiv</tt>' instruction returns the quotient of its two operands.</p>
 
 <h5>Arguments:</h5>
-<p>The two arguments to the '<tt>udiv</tt>' instruction must be 
+<p>The two arguments to the '<tt>udiv</tt>' instruction must be
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    values.  Both arguments must have identical types.</p>
 
@@ -3167,7 +3167,7 @@ Instruction</a> </div>
 <p>The '<tt>sdiv</tt>' instruction returns the quotient of its two operands.</p>
 
 <h5>Arguments:</h5>
-<p>The two arguments to the '<tt>sdiv</tt>' instruction must be 
+<p>The two arguments to the '<tt>sdiv</tt>' instruction must be
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    values.  Both arguments must have identical types.</p>
 
@@ -3238,7 +3238,7 @@ Instruction</a> </div>
    division of its two arguments.</p>
 
 <h5>Arguments:</h5>
-<p>The two arguments to the '<tt>urem</tt>' instruction must be 
+<p>The two arguments to the '<tt>urem</tt>' instruction must be
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    values.  Both arguments must have identical types.</p>
 
@@ -3278,7 +3278,7 @@ Instruction</a> </div>
    elements must be integers.</p>
 
 <h5>Arguments:</h5>
-<p>The two arguments to the '<tt>srem</tt>' instruction must be 
+<p>The two arguments to the '<tt>srem</tt>' instruction must be
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    values.  Both arguments must have identical types.</p>
 
@@ -3373,7 +3373,7 @@ Instruction</a> </div>
 <p>Both arguments to the '<tt>shl</tt>' instruction must be the
     same <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of
     integer type.  '<tt>op2</tt>' is treated as an unsigned value.</p>
- 
+
 <h5>Semantics:</h5>
 <p>The value produced is <tt>op1</tt> * 2<sup><tt>op2</tt></sup> mod
    2<sup>n</sup>, where <tt>n</tt> is the width of the result.  If <tt>op2</tt>
@@ -3409,7 +3409,7 @@ Instruction</a> </div>
    operand shifted to the right a specified number of bits with zero fill.</p>
 
 <h5>Arguments:</h5>
-<p>Both arguments to the '<tt>lshr</tt>' instruction must be the same 
+<p>Both arguments to the '<tt>lshr</tt>' instruction must be the same
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    type. '<tt>op2</tt>' is treated as an unsigned value.</p>
 
@@ -3449,7 +3449,7 @@ Instruction</a> </div>
    extension.</p>
 
 <h5>Arguments:</h5>
-<p>Both arguments to the '<tt>ashr</tt>' instruction must be the same 
+<p>Both arguments to the '<tt>ashr</tt>' instruction must be the same
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    type.  '<tt>op2</tt>' is treated as an unsigned value.</p>
 
@@ -3489,7 +3489,7 @@ Instruction</a> </div>
    operands.</p>
 
 <h5>Arguments:</h5>
-<p>The two arguments to the '<tt>and</tt>' instruction must be 
+<p>The two arguments to the '<tt>and</tt>' instruction must be
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    values.  Both arguments must have identical types.</p>
 
@@ -3548,7 +3548,7 @@ Instruction</a> </div>
    two operands.</p>
 
 <h5>Arguments:</h5>
-<p>The two arguments to the '<tt>or</tt>' instruction must be 
+<p>The two arguments to the '<tt>or</tt>' instruction must be
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    values.  Both arguments must have identical types.</p>
 
@@ -3611,7 +3611,7 @@ Instruction</a> </div>
    complement" operation, which is the "~" operator in C.</p>
 
 <h5>Arguments:</h5>
-<p>The two arguments to the '<tt>xor</tt>' instruction must be 
+<p>The two arguments to the '<tt>xor</tt>' instruction must be
    <a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
    values.  Both arguments must have identical types.</p>
 
@@ -3659,7 +3659,7 @@ Instruction</a> </div>
 </div>
 
 <!-- ======================================================================= -->
-<div class="doc_subsection"> 
+<div class="doc_subsection">
   <a name="vectorops">Vector Operations</a>
 </div>
 
@@ -3782,20 +3782,20 @@ Instruction</a> </div>
 
 <h5>Example:</h5>
 <pre>
-  &lt;result&gt; = shufflevector &lt;4 x i32&gt; %v1, &lt;4 x i32&gt; %v2, 
+  &lt;result&gt; = shufflevector &lt;4 x i32&gt; %v1, &lt;4 x i32&gt; %v2,
                           &lt;4 x i32&gt; &lt;i32 0, i32 4, i32 1, i32 5&gt;  <i>; yields &lt;4 x i32&gt;</i>
-  &lt;result&gt; = shufflevector &lt;4 x i32&gt; %v1, &lt;4 x i32&gt; undef, 
+  &lt;result&gt; = shufflevector &lt;4 x i32&gt; %v1, &lt;4 x i32&gt; undef,
                           &lt;4 x i32&gt; &lt;i32 0, i32 1, i32 2, i32 3&gt;  <i>; yields &lt;4 x i32&gt;</i> - Identity shuffle.
-  &lt;result&gt; = shufflevector &lt;8 x i32&gt; %v1, &lt;8 x i32&gt; undef, 
+  &lt;result&gt; = shufflevector &lt;8 x i32&gt; %v1, &lt;8 x i32&gt; undef,
                           &lt;4 x i32&gt; &lt;i32 0, i32 1, i32 2, i32 3&gt;  <i>; yields &lt;4 x i32&gt;</i>
-  &lt;result&gt; = shufflevector &lt;4 x i32&gt; %v1, &lt;4 x i32&gt; %v2, 
+  &lt;result&gt; = shufflevector &lt;4 x i32&gt; %v1, &lt;4 x i32&gt; %v2,
                           &lt;8 x i32&gt; &lt;i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7 &gt;  <i>; yields &lt;8 x i32&gt;</i>
 </pre>
 
 </div>
 
 <!-- ======================================================================= -->
-<div class="doc_subsection"> 
+<div class="doc_subsection">
   <a name="aggregateops">Aggregate Operations</a>
 </div>
 
@@ -3880,7 +3880,7 @@ Instruction</a> </div>
 
 
 <!-- ======================================================================= -->
-<div class="doc_subsection"> 
+<div class="doc_subsection">
   <a name="memoryops">Memory Access and Addressing Operations</a>
 </div>
 
@@ -4243,15 +4243,15 @@ entry:
 </pre>
 
 <h5>Overview:</h5>
-<p>The '<tt>zext</tt>' instruction zero extends its operand to type 
+<p>The '<tt>zext</tt>' instruction zero extends its operand to type
    <tt>ty2</tt>.</p>
 
 
 <h5>Arguments:</h5>
-<p>The '<tt>zext</tt>' instruction takes a value to cast, which must be of 
+<p>The '<tt>zext</tt>' instruction takes a value to cast, which must be of
    <a href="#t_integer">integer</a> type, and a type to cast it to, which must
    also be of <a href="#t_integer">integer</a> type. The bit size of the
-   <tt>value</tt> must be smaller than the bit size of the destination type, 
+   <tt>value</tt> must be smaller than the bit size of the destination type,
    <tt>ty2</tt>.</p>
 
 <h5>Semantics:</h5>
@@ -4283,10 +4283,10 @@ entry:
 <p>The '<tt>sext</tt>' sign extends <tt>value</tt> to the type <tt>ty2</tt>.</p>
 
 <h5>Arguments:</h5>
-<p>The '<tt>sext</tt>' instruction takes a value to cast, which must be of 
+<p>The '<tt>sext</tt>' instruction takes a value to cast, which must be of
    <a href="#t_integer">integer</a> type, and a type to cast it to, which must
    also be of <a href="#t_integer">integer</a> type.  The bit size of the
-   <tt>value</tt> must be smaller than the bit size of the destination type, 
+   <tt>value</tt> must be smaller than the bit size of the destination type,
    <tt>ty2</tt>.</p>
 
 <h5>Semantics:</h5>
@@ -4324,12 +4324,12 @@ entry:
 <p>The '<tt>fptrunc</tt>' instruction takes a <a href="#t_floating">floating
    point</a> value to cast and a <a href="#t_floating">floating point</a> type
    to cast it to. The size of <tt>value</tt> must be larger than the size of
-   <tt>ty2</tt>. This implies that <tt>fptrunc</tt> cannot be used to make a 
+   <tt>ty2</tt>. This implies that <tt>fptrunc</tt> cannot be used to make a
    <i>no-op cast</i>.</p>
 
 <h5>Semantics:</h5>
 <p>The '<tt>fptrunc</tt>' instruction truncates a <tt>value</tt> from a larger
-   <a href="#t_floating">floating point</a> type to a smaller 
+   <a href="#t_floating">floating point</a> type to a smaller
    <a href="#t_floating">floating point</a> type.  If the value cannot fit
    within the destination type, <tt>ty2</tt>, then the results are
    undefined.</p>
@@ -4358,7 +4358,7 @@ entry:
    floating point value.</p>
 
 <h5>Arguments:</h5>
-<p>The '<tt>fpext</tt>' instruction takes a 
+<p>The '<tt>fpext</tt>' instruction takes a
    <a href="#t_floating">floating point</a> <tt>value</tt> to cast, and
    a <a href="#t_floating">floating point</a> type to cast it to. The source
    type must be smaller than the destination type.</p>
@@ -4401,7 +4401,7 @@ entry:
    vector integer type with the same number of elements as <tt>ty</tt></p>
 
 <h5>Semantics:</h5>
-<p>The '<tt>fptoui</tt>' instruction converts its 
+<p>The '<tt>fptoui</tt>' instruction converts its
    <a href="#t_floating">floating point</a> operand into the nearest (rounding
    towards zero) unsigned integer value. If the value cannot fit
    in <tt>ty2</tt>, the results are undefined.</p>
@@ -4427,7 +4427,7 @@ entry:
 </pre>
 
 <h5>Overview:</h5>
-<p>The '<tt>fptosi</tt>' instruction converts 
+<p>The '<tt>fptosi</tt>' instruction converts
    <a href="#t_floating">floating point</a> <tt>value</tt> to
    type <tt>ty2</tt>.</p>
 
@@ -4439,7 +4439,7 @@ entry:
    vector integer type with the same number of elements as <tt>ty</tt></p>
 
 <h5>Semantics:</h5>
-<p>The '<tt>fptosi</tt>' instruction converts its 
+<p>The '<tt>fptosi</tt>' instruction converts its
    <a href="#t_floating">floating point</a> operand into the nearest (rounding
    towards zero) signed integer value. If the value cannot fit in <tt>ty2</tt>,
    the results are undefined.</p>
@@ -4636,7 +4636,7 @@ entry:
 <pre>
   %X = bitcast i8 255 to i8              <i>; yields i8 :-1</i>
   %Y = bitcast i32* %x to sint*          <i>; yields sint*:%x</i>
-  %Z = bitcast &lt;2 x int&gt; %V to i64;      <i>; yields i64: %V</i>   
+  %Z = bitcast &lt;2 x int&gt; %V to i64;      <i>; yields i64: %V</i>
 </pre>
 
 </div>
@@ -4696,11 +4696,11 @@ entry:
    result, as follows:</p>
 
 <ol>
-  <li><tt>eq</tt>: yields <tt>true</tt> if the operands are equal, 
+  <li><tt>eq</tt>: yields <tt>true</tt> if the operands are equal,
       <tt>false</tt> otherwise. No sign interpretation is necessary or
       performed.</li>
 
-  <li><tt>ne</tt>: yields <tt>true</tt> if the operands are unequal, 
+  <li><tt>ne</tt>: yields <tt>true</tt> if the operands are unequal,
       <tt>false</tt> otherwise. No sign interpretation is necessary or
       performed.</li>
 
@@ -4817,42 +4817,42 @@ entry:
 <ol>
   <li><tt>false</tt>: always yields <tt>false</tt>, regardless of operands.</li>
 
-  <li><tt>oeq</tt>: yields <tt>true</tt> if both operands are not a QNAN and 
+  <li><tt>oeq</tt>: yields <tt>true</tt> if both operands are not a QNAN and
       <tt>op1</tt> is equal to <tt>op2</tt>.</li>
 
   <li><tt>ogt</tt>: yields <tt>true</tt> if both operands are not a QNAN and
       <tt>op1</tt> is greather than <tt>op2</tt>.</li>
 
-  <li><tt>oge</tt>: yields <tt>true</tt> if both operands are not a QNAN and 
+  <li><tt>oge</tt>: yields <tt>true</tt> if both operands are not a QNAN and
       <tt>op1</tt> is greater than or equal to <tt>op2</tt>.</li>
 
-  <li><tt>olt</tt>: yields <tt>true</tt> if both operands are not a QNAN and 
+  <li><tt>olt</tt>: yields <tt>true</tt> if both operands are not a QNAN and
       <tt>op1</tt> is less than <tt>op2</tt>.</li>
 
-  <li><tt>ole</tt>: yields <tt>true</tt> if both operands are not a QNAN and 
+  <li><tt>ole</tt>: yields <tt>true</tt> if both operands are not a QNAN and
       <tt>op1</tt> is less than or equal to <tt>op2</tt>.</li>
 
-  <li><tt>one</tt>: yields <tt>true</tt> if both operands are not a QNAN and 
+  <li><tt>one</tt>: yields <tt>true</tt> if both operands are not a QNAN and
       <tt>op1</tt> is not equal to <tt>op2</tt>.</li>
 
   <li><tt>ord</tt>: yields <tt>true</tt> if both operands are not a QNAN.</li>
 
-  <li><tt>ueq</tt>: yields <tt>true</tt> if either operand is a QNAN or 
+  <li><tt>ueq</tt>: yields <tt>true</tt> if either operand is a QNAN or
       <tt>op1</tt> is equal to <tt>op2</tt>.</li>
 
-  <li><tt>ugt</tt>: yields <tt>true</tt> if either operand is a QNAN or 
+  <li><tt>ugt</tt>: yields <tt>true</tt> if either operand is a QNAN or
       <tt>op1</tt> is greater than <tt>op2</tt>.</li>
 
-  <li><tt>uge</tt>: yields <tt>true</tt> if either operand is a QNAN or 
+  <li><tt>uge</tt>: yields <tt>true</tt> if either operand is a QNAN or
       <tt>op1</tt> is greater than or equal to <tt>op2</tt>.</li>
 
-  <li><tt>ult</tt>: yields <tt>true</tt> if either operand is a QNAN or 
+  <li><tt>ult</tt>: yields <tt>true</tt> if either operand is a QNAN or
       <tt>op1</tt> is less than <tt>op2</tt>.</li>
 
-  <li><tt>ule</tt>: yields <tt>true</tt> if either operand is a QNAN or 
+  <li><tt>ule</tt>: yields <tt>true</tt> if either operand is a QNAN or
       <tt>op1</tt> is less than or equal to <tt>op2</tt>.</li>
 
-  <li><tt>une</tt>: yields <tt>true</tt> if either operand is a QNAN or 
+  <li><tt>une</tt>: yields <tt>true</tt> if either operand is a QNAN or
       <tt>op1</tt> is not equal to <tt>op2</tt>.</li>
 
   <li><tt>uno</tt>: yields <tt>true</tt> if either operand is a QNAN.</li>
@@ -5144,7 +5144,7 @@ freestanding environments and non-C-base
    suffix is required. Because the argument's type is matched against the return
    type, it does not require its own name suffix.</p>
 
-<p>To learn how to add an intrinsic function, please see the 
+<p>To learn how to add an intrinsic function, please see the
    <a href="ExtendingLLVM.html">Extending LLVM Guide</a>.</p>
 
 </div>
@@ -6579,11 +6579,11 @@ LLVM</a>.</p>
 <ul>
   <li><tt>ll</tt>: All loads before the barrier must complete before any load
       after the barrier begins.</li>
-  <li><tt>ls</tt>: All loads before the barrier must complete before any 
+  <li><tt>ls</tt>: All loads before the barrier must complete before any
       store after the barrier begins.</li>
-  <li><tt>ss</tt>: All stores before the barrier must complete before any 
+  <li><tt>ss</tt>: All stores before the barrier must complete before any
       store after the barrier begins.</li>
-  <li><tt>sl</tt>: All stores before the barrier must complete before any 
+  <li><tt>sl</tt>: All stores before the barrier must complete before any
       load after the barrier begins.</li>
 </ul>
 
@@ -6796,7 +6796,7 @@ LLVM</a>.</p>
 </pre>
 
 <h5>Overview:</h5>
-<p>This intrinsic subtracts <tt>delta</tt> to the value stored in memory at 
+<p>This intrinsic subtracts <tt>delta</tt> to the value stored in memory at
    <tt>ptr</tt>. It yields the original value at <tt>ptr</tt>.</p>
 
 <h5>Arguments:</h5>
@@ -6952,7 +6952,7 @@ LLVM</a>.</p>
 </pre>
 
 <h5>Overview:</h5>
-<p>These intrinsics takes the signed or unsigned minimum or maximum of 
+<p>These intrinsics takes the signed or unsigned minimum or maximum of
    <tt>delta</tt> and the value stored in memory at <tt>ptr</tt>. It yields the
    original value at <tt>ptr</tt>.</p>
 
@@ -7262,24 +7262,44 @@ LLVM</a>.</p>
 </pre>
 
 <h5>Overview:</h5>
-<p>The <tt>llvm.objectsize</tt> intrinsic returns the constant number of bytes
-   from <tt>ptr</tt> to the end of the object <tt>ptr</tt> points to if it
-   can deduce this at compile time.  If there are any side-effects in evaluating
-   the argument or it cannot deduce which objects <tt>ptr</tt> points to at compile
-   time the intrinsic returns <tt>(size_t) -1</tt> for <tt>type</tt> 0
-   or 1 and <tt>(size_t) 0</tt> for <tt>type</tt> 2 or 3.</p>
+<p>The <tt>llvm.objectsize</tt> intrinsic is designed to provide information
+   to the optimizers to either discover at compile time either a) when an
+   operation like memcpy will either overflow a buffer that corresponds to
+   an object, or b) to determine that a runtime check for overflow isn't
+   necessary. An object in this context means an allocation of a
+   specific <a href="#typesystem">type</a>.</p>
 
 <h5>Arguments:</h5>
 <p>The <tt>llvm.objectsize</tt> intrinsic takes two arguments.  The first
-   argument is a pointer to the object <tt>ptr</tt> and an integer <tt>type</tt>.
-   <tt>type</tt> is an integer ranging from 0 to 3. The lsb corresponds to
-   a return value based on whole objects, the second bit whether or not we
-   return the maximum or minimum remaining bytes computed.</p>
+   argument is a pointer to the object <tt>ptr</tt>. The second argument
+   is an integer <tt>type</tt> which ranges from 0 to 3. The first bit in
+   the type corresponds to a return value based on whole objects,
+   and the second bit whether or not we return the maximum or minimum
+   remaining bytes computed.</p>
+<table class="layout">
+  <tr class="layout">
+    <td class="left"><tt>00</tt></td>
+    <td class="left">whole object, maximum number of bytes</td>
+  </tr>
+  <tr class="layout">
+    <td class="left"><tt>01</tt></td>
+    <td class="left">partial object, maximum number of bytes</td>
+  </tr>
+  <tr class="layout">
+    <td class="left"><tt>10</tt></td>
+    <td class="left">whole object, minimum number of bytes</td>
+  </tr>
+  <tr class="layout">
+    <td class="left"><tt>11</tt></td>
+    <td class="left">partial object, minimum number of bytes</td>
+  </tr>
+</table>
 
 <h5>Semantics:</h5>
 <p>The <tt>llvm.objectsize</tt> intrinsic is lowered to either a constant
-   representing the size of the object concerned or <tt>(size_t) -1</tt> if
-   it cannot be determined at compile time.</p>
+   representing the size of the object concerned or <tt>i32/i64 -1 or 0</tt>
+   (depending on the <tt>type</tt> argument if the size cannot be determined

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


More information about the svn-src-all mailing list