Date: Sat, 4 Jul 2009 13:58:26 +0000 (UTC) From: Ed Schouten <ed@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r195340 - in vendor/llvm/dist: . autoconf cmake docs examples/BrainF examples/Fibonacci examples/HowToUseJIT examples/Kaleidoscope examples/ModuleMaker examples/ParallelJIT include/llvm... Message-ID: <200907041358.n64DwQFg014366@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ed Date: Sat Jul 4 13:58:26 2009 New Revision: 195340 URL: http://svn.freebsd.org/changeset/base/195340 Log: Import LLVM 74788. Added: vendor/llvm/dist/include/llvm/LLVMContext.h vendor/llvm/dist/include/llvm/System/Errno.h vendor/llvm/dist/include/llvm/Transforms/Utils/SSI.h vendor/llvm/dist/lib/CompilerDriver/BuiltinOptions.cpp vendor/llvm/dist/lib/CompilerDriver/Main.cpp vendor/llvm/dist/lib/System/Errno.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/Thumb1RegisterInfo.h vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.h vendor/llvm/dist/lib/Target/ARM/Thumb2RegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2RegisterInfo.h vendor/llvm/dist/lib/Transforms/Utils/SSI.cpp vendor/llvm/dist/lib/VMCore/LLVMContext.cpp vendor/llvm/dist/lib/VMCore/LLVMContextImpl.h vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/ vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/dg.exp vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/local-array.ll vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/no-array.ll vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/siv-strong1.ll vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/siv-strong2.ll vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/ziv1.ll vendor/llvm/dist/test/Analysis/LoopDependenceAnalysis/ziv2.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert2.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert3.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert4.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert5.ll vendor/llvm/dist/test/CodeGen/ARM/2009-07-01-CommuteBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/available-externally.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cmn.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-jumptbl.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr_ext.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr_post.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr_pre.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldrb.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldrh.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sbc2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-str.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-str_post.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-str_pre.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-strb.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-strh.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sub.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sub2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sub4.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sub5.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sxt_rot.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-teq.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-teq2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tst.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tst2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-uxt_rot.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-uxtb.ll vendor/llvm/dist/test/CodeGen/Thumb2/tls1.ll vendor/llvm/dist/test/CodeGen/Thumb2/tls2.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-constpool.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-gv.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack3.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack4.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack5.ll vendor/llvm/dist/test/Feature/mdnode2.ll vendor/llvm/dist/test/Feature/mdnode3.ll vendor/llvm/dist/test/FrontendC++/2009-06-30-ByrefBlock.cpp vendor/llvm/dist/test/MC/AsmParser/directive_align.s vendor/llvm/dist/test/MC/AsmParser/directive_symbol_attrs.s vendor/llvm/dist/test/MC/AsmParser/exprs.s vendor/llvm/dist/test/MC/AsmParser/x86_operands.s vendor/llvm/dist/test/TableGen/ListArgs.td vendor/llvm/dist/test/TableGen/ListArgsSimple.td vendor/llvm/dist/test/Transforms/IndVarSimplify/loop_evaluate9.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-07-02-MaskedIntVector.ll vendor/llvm/dist/test/Transforms/InstCombine/bitcast-scalar-to-vector.ll vendor/llvm/dist/test/Transforms/LoopIndexSplit/non-iv-cmp-operand.ll vendor/llvm/dist/test/Transforms/LoopSimplify/merge-exits.ll vendor/llvm/dist/tools/llvm-mc/AsmExpr.cpp vendor/llvm/dist/tools/llvm-mc/AsmExpr.h vendor/llvm/dist/unittests/VMCore/PassManagerTest.cpp vendor/llvm/dist/utils/crosstool/ARM/README Deleted: vendor/llvm/dist/lib/Target/ARM/ThumbInstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/ThumbInstrInfo.h Modified: vendor/llvm/dist/Makefile.config.in vendor/llvm/dist/Makefile.rules vendor/llvm/dist/autoconf/configure.ac vendor/llvm/dist/cmake/config-ix.cmake vendor/llvm/dist/configure vendor/llvm/dist/docs/CodingStandards.html vendor/llvm/dist/docs/CompilerDriver.html vendor/llvm/dist/docs/FAQ.html vendor/llvm/dist/docs/ReleaseNotes-2.6.html vendor/llvm/dist/docs/TableGenFundamentals.html vendor/llvm/dist/docs/WritingAnLLVMPass.html vendor/llvm/dist/examples/BrainF/BrainF.cpp vendor/llvm/dist/examples/BrainF/BrainF.h vendor/llvm/dist/examples/BrainF/BrainFDriver.cpp vendor/llvm/dist/examples/Fibonacci/fibonacci.cpp vendor/llvm/dist/examples/HowToUseJIT/HowToUseJIT.cpp vendor/llvm/dist/examples/Kaleidoscope/toy.cpp vendor/llvm/dist/examples/ModuleMaker/ModuleMaker.cpp vendor/llvm/dist/examples/ParallelJIT/ParallelJIT.cpp vendor/llvm/dist/include/llvm-c/BitReader.h vendor/llvm/dist/include/llvm-c/Core.h vendor/llvm/dist/include/llvm-c/lto.h vendor/llvm/dist/include/llvm/ADT/APInt.h vendor/llvm/dist/include/llvm/ADT/FoldingSet.h vendor/llvm/dist/include/llvm/ADT/PointerUnion.h vendor/llvm/dist/include/llvm/ADT/Statistic.h vendor/llvm/dist/include/llvm/ADT/Triple.h vendor/llvm/dist/include/llvm/Analysis/DebugInfo.h vendor/llvm/dist/include/llvm/Analysis/Dominators.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/ScalarEvolution.h vendor/llvm/dist/include/llvm/Analysis/ScalarEvolutionExpander.h vendor/llvm/dist/include/llvm/Analysis/ScalarEvolutionExpressions.h vendor/llvm/dist/include/llvm/Assembly/Parser.h vendor/llvm/dist/include/llvm/Bitcode/Archive.h vendor/llvm/dist/include/llvm/Bitcode/BitstreamReader.h vendor/llvm/dist/include/llvm/Bitcode/ReaderWriter.h vendor/llvm/dist/include/llvm/CodeGen/AsmPrinter.h vendor/llvm/dist/include/llvm/CodeGen/BinaryObject.h vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBuilder.h vendor/llvm/dist/include/llvm/CodeGen/MachineLoopInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineOperand.h vendor/llvm/dist/include/llvm/CodeGen/RegisterScavenging.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.td vendor/llvm/dist/include/llvm/CompilerDriver/Main.inc vendor/llvm/dist/include/llvm/Config/config.h.cmake vendor/llvm/dist/include/llvm/Config/config.h.in vendor/llvm/dist/include/llvm/Debugger/Debugger.h vendor/llvm/dist/include/llvm/DerivedTypes.h vendor/llvm/dist/include/llvm/Function.h vendor/llvm/dist/include/llvm/Intrinsics.td vendor/llvm/dist/include/llvm/LinkAllPasses.h vendor/llvm/dist/include/llvm/LinkAllVMCore.h vendor/llvm/dist/include/llvm/Linker.h vendor/llvm/dist/include/llvm/MC/MCContext.h vendor/llvm/dist/include/llvm/MC/MCInst.h vendor/llvm/dist/include/llvm/MC/MCSection.h vendor/llvm/dist/include/llvm/MC/MCStreamer.h vendor/llvm/dist/include/llvm/MC/MCSymbol.h vendor/llvm/dist/include/llvm/MC/MCValue.h vendor/llvm/dist/include/llvm/Module.h vendor/llvm/dist/include/llvm/Pass.h vendor/llvm/dist/include/llvm/Support/SourceMgr.h vendor/llvm/dist/include/llvm/Support/TypeBuilder.h vendor/llvm/dist/include/llvm/Target/TargetCallingConv.td vendor/llvm/dist/include/llvm/Target/TargetELFWriterInfo.h vendor/llvm/dist/include/llvm/Target/TargetLowering.h vendor/llvm/dist/include/llvm/Transforms/Scalar.h vendor/llvm/dist/include/llvm/Transforms/Utils/Cloning.h vendor/llvm/dist/include/llvm/Transforms/Utils/Local.h vendor/llvm/dist/lib/Analysis/DebugInfo.cpp vendor/llvm/dist/lib/Analysis/IPA/Andersens.cpp vendor/llvm/dist/lib/Analysis/LoopDependenceAnalysis.cpp vendor/llvm/dist/lib/Analysis/LoopInfo.cpp vendor/llvm/dist/lib/Analysis/LoopPass.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolutionExpander.cpp vendor/llvm/dist/lib/Analysis/ValueTracking.cpp vendor/llvm/dist/lib/Archive/Archive.cpp vendor/llvm/dist/lib/Archive/ArchiveInternals.h vendor/llvm/dist/lib/Archive/ArchiveReader.cpp vendor/llvm/dist/lib/Archive/ArchiveWriter.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.h vendor/llvm/dist/lib/AsmParser/LLParser.cpp vendor/llvm/dist/lib/AsmParser/LLParser.h vendor/llvm/dist/lib/AsmParser/Parser.cpp vendor/llvm/dist/lib/Bitcode/Reader/BitReader.cpp vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.h vendor/llvm/dist/lib/CodeGen/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/ELF.h vendor/llvm/dist/lib/CodeGen/ELFCodeEmitter.cpp vendor/llvm/dist/lib/CodeGen/ELFCodeEmitter.h vendor/llvm/dist/lib/CodeGen/ELFWriter.cpp vendor/llvm/dist/lib/CodeGen/ELFWriter.h vendor/llvm/dist/lib/CodeGen/LiveIntervalAnalysis.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/RegAllocLinearScan.cpp vendor/llvm/dist/lib/CodeGen/RegisterScavenging.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/SelectionDAG/FastISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodesEmit.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.cpp vendor/llvm/dist/lib/CodeGen/TargetInstrInfoImpl.cpp vendor/llvm/dist/lib/CodeGen/VirtRegRewriter.cpp vendor/llvm/dist/lib/CompilerDriver/Action.cpp vendor/llvm/dist/lib/CompilerDriver/CompilationGraph.cpp vendor/llvm/dist/lib/CompilerDriver/Makefile vendor/llvm/dist/lib/CompilerDriver/Tool.cpp vendor/llvm/dist/lib/Debugger/Debugger.cpp vendor/llvm/dist/lib/Debugger/ProgramInfo.cpp vendor/llvm/dist/lib/ExecutionEngine/JIT/JIT.cpp vendor/llvm/dist/lib/Linker/LinkArchives.cpp vendor/llvm/dist/lib/Linker/LinkItems.cpp vendor/llvm/dist/lib/Linker/Linker.cpp vendor/llvm/dist/lib/MC/MCAsmStreamer.cpp vendor/llvm/dist/lib/Makefile vendor/llvm/dist/lib/Support/APInt.cpp vendor/llvm/dist/lib/Support/Annotation.cpp vendor/llvm/dist/lib/Support/SourceMgr.cpp vendor/llvm/dist/lib/Support/SystemUtils.cpp vendor/llvm/dist/lib/Support/Triple.cpp vendor/llvm/dist/lib/System/CMakeLists.txt vendor/llvm/dist/lib/System/ThreadLocal.cpp vendor/llvm/dist/lib/System/Unix/Unix.h vendor/llvm/dist/lib/System/Win32/ThreadLocal.inc vendor/llvm/dist/lib/Target/ARM/ARM.h vendor/llvm/dist/lib/Target/ARM/ARMAddressingModes.h vendor/llvm/dist/lib/Target/ARM/ARMCodeEmitter.cpp 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/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/ARMInstrThumb.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td vendor/llvm/dist/lib/Target/ARM/ARMMachineFunctionInfo.h vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.h vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.h vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.h vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp vendor/llvm/dist/lib/Target/ARM/CMakeLists.txt vendor/llvm/dist/lib/Target/ARM/README.txt vendor/llvm/dist/lib/Target/Alpha/Alpha.h vendor/llvm/dist/lib/Target/Alpha/AlphaISelLowering.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaISelLowering.h vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaTargetMachine.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaTargetMachine.h vendor/llvm/dist/lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp vendor/llvm/dist/lib/Target/Alpha/CMakeLists.txt vendor/llvm/dist/lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp vendor/llvm/dist/lib/Target/CellSPU/CMakeLists.txt vendor/llvm/dist/lib/Target/CellSPU/SPU.h vendor/llvm/dist/lib/Target/CellSPU/SPUISelLowering.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUISelLowering.h vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUTargetMachine.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUTargetMachine.h vendor/llvm/dist/lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp vendor/llvm/dist/lib/Target/IA64/CMakeLists.txt vendor/llvm/dist/lib/Target/IA64/IA64.h vendor/llvm/dist/lib/Target/IA64/IA64ISelLowering.cpp vendor/llvm/dist/lib/Target/IA64/IA64ISelLowering.h vendor/llvm/dist/lib/Target/IA64/IA64TargetMachine.cpp vendor/llvm/dist/lib/Target/IA64/IA64TargetMachine.h vendor/llvm/dist/lib/Target/MSP430/MSP430.h vendor/llvm/dist/lib/Target/MSP430/MSP430AsmPrinter.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.h vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.cpp vendor/llvm/dist/lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp vendor/llvm/dist/lib/Target/Mips/CMakeLists.txt vendor/llvm/dist/lib/Target/Mips/Mips.h vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.h vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.h vendor/llvm/dist/lib/Target/PIC16/PIC16.h vendor/llvm/dist/lib/Target/PIC16/PIC16AsmPrinter.cpp vendor/llvm/dist/lib/Target/PIC16/PIC16AsmPrinter.h vendor/llvm/dist/lib/Target/PIC16/PIC16ISelLowering.cpp vendor/llvm/dist/lib/Target/PIC16/PIC16ISelLowering.h vendor/llvm/dist/lib/Target/PIC16/PIC16InstrInfo.td vendor/llvm/dist/lib/Target/PIC16/PIC16TargetMachine.cpp vendor/llvm/dist/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp vendor/llvm/dist/lib/Target/PowerPC/CMakeLists.txt vendor/llvm/dist/lib/Target/PowerPC/PPC.h vendor/llvm/dist/lib/Target/PowerPC/PPCCallingConv.td vendor/llvm/dist/lib/Target/PowerPC/PPCCodeEmitter.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCFrameInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCHazardRecognizers.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h vendor/llvm/dist/lib/Target/PowerPC/PPCInstr64Bit.td vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCJITInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCSubtarget.h vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.h vendor/llvm/dist/lib/Target/PowerPC/README.txt vendor/llvm/dist/lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp vendor/llvm/dist/lib/Target/Sparc/CMakeLists.txt vendor/llvm/dist/lib/Target/Sparc/Sparc.h vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.cpp vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.h vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.cpp vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.h vendor/llvm/dist/lib/Target/TargetELFWriterInfo.cpp vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h vendor/llvm/dist/lib/Target/X86/CMakeLists.txt vendor/llvm/dist/lib/Target/X86/X86.h vendor/llvm/dist/lib/Target/X86/X86.td vendor/llvm/dist/lib/Target/X86/X86ELFWriterInfo.cpp vendor/llvm/dist/lib/Target/X86/X86ELFWriterInfo.h vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp 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/X86InstrBuilder.h vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.td vendor/llvm/dist/lib/Target/X86/X86Subtarget.h vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp vendor/llvm/dist/lib/Target/X86/X86TargetMachine.h vendor/llvm/dist/lib/Target/XCore/XCore.h vendor/llvm/dist/lib/Target/XCore/XCoreAsmPrinter.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.h vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.cpp vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp vendor/llvm/dist/lib/Transforms/IPO/PartialInlining.cpp vendor/llvm/dist/lib/Transforms/IPO/RaiseAllocations.cpp vendor/llvm/dist/lib/Transforms/Scalar/CodeGenPrepare.cpp vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp vendor/llvm/dist/lib/Transforms/Scalar/IndVarSimplify.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/LoopIndexSplit.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopRotation.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopUnswitch.cpp vendor/llvm/dist/lib/Transforms/Scalar/MemCpyOptimizer.cpp vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp vendor/llvm/dist/lib/Transforms/Scalar/Reg2Mem.cpp vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp vendor/llvm/dist/lib/Transforms/Scalar/ScalarReplAggregates.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyCFGPass.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyLibCalls.cpp vendor/llvm/dist/lib/Transforms/Scalar/TailDuplication.cpp vendor/llvm/dist/lib/Transforms/Utils/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Utils/CloneModule.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopSimplify.cpp vendor/llvm/dist/lib/Transforms/Utils/LowerAllocations.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyCFG.cpp vendor/llvm/dist/lib/VMCore/AsmWriter.cpp vendor/llvm/dist/lib/VMCore/CMakeLists.txt vendor/llvm/dist/lib/VMCore/Core.cpp vendor/llvm/dist/lib/VMCore/Function.cpp vendor/llvm/dist/lib/VMCore/Module.cpp vendor/llvm/dist/lib/VMCore/PassManager.cpp vendor/llvm/dist/lib/VMCore/Type.cpp vendor/llvm/dist/lib/VMCore/ValueTypes.cpp vendor/llvm/dist/test/CodeGen/ARM/ldr.ll vendor/llvm/dist/test/CodeGen/ARM/sxt_rot.ll vendor/llvm/dist/test/CodeGen/Thumb2/load-global.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-adc.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-add2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-add5.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-and.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-bic.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cmp.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cmp2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-eor.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-mvn2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-orn.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-orr.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-rsb.ll vendor/llvm/dist/tools/Makefile vendor/llvm/dist/tools/bugpoint/BugDriver.cpp vendor/llvm/dist/tools/bugpoint/BugDriver.h vendor/llvm/dist/tools/bugpoint/CrashDebugger.cpp vendor/llvm/dist/tools/bugpoint/Miscompilation.cpp vendor/llvm/dist/tools/bugpoint/OptimizerDriver.cpp vendor/llvm/dist/tools/bugpoint/bugpoint.cpp 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-ar/llvm-ar.cpp vendor/llvm/dist/tools/llvm-as/llvm-as.cpp vendor/llvm/dist/tools/llvm-db/CLIDebugger.cpp vendor/llvm/dist/tools/llvm-db/CLIDebugger.h vendor/llvm/dist/tools/llvm-db/Commands.cpp vendor/llvm/dist/tools/llvm-db/llvm-db.cpp vendor/llvm/dist/tools/llvm-dis/llvm-dis.cpp vendor/llvm/dist/tools/llvm-extract/llvm-extract.cpp vendor/llvm/dist/tools/llvm-ld/llvm-ld.cpp vendor/llvm/dist/tools/llvm-link/llvm-link.cpp vendor/llvm/dist/tools/llvm-mc/AsmLexer.cpp vendor/llvm/dist/tools/llvm-mc/AsmLexer.h vendor/llvm/dist/tools/llvm-mc/AsmParser.cpp vendor/llvm/dist/tools/llvm-mc/AsmParser.h vendor/llvm/dist/tools/llvm-mc/CMakeLists.txt vendor/llvm/dist/tools/llvm-mc/MC-X86Specific.cpp vendor/llvm/dist/tools/llvm-mc/llvm-mc.cpp vendor/llvm/dist/tools/llvm-nm/llvm-nm.cpp vendor/llvm/dist/tools/llvm-prof/llvm-prof.cpp vendor/llvm/dist/tools/llvm-ranlib/llvm-ranlib.cpp 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/example/mcc16/plugins/PIC16Base/PluginMain.cpp vendor/llvm/dist/tools/lto/LTOCodeGenerator.cpp vendor/llvm/dist/tools/lto/LTOCodeGenerator.h vendor/llvm/dist/tools/lto/LTOModule.cpp vendor/llvm/dist/tools/lto/LTOModule.h vendor/llvm/dist/tools/lto/Makefile vendor/llvm/dist/tools/lto/lto.cpp vendor/llvm/dist/tools/opt/opt.cpp vendor/llvm/dist/unittests/ADT/APIntTest.cpp vendor/llvm/dist/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp vendor/llvm/dist/unittests/MC/AsmStreamerTest.cpp vendor/llvm/dist/unittests/VMCore/Makefile vendor/llvm/dist/utils/NewNightlyTest.pl vendor/llvm/dist/utils/TableGen/AsmWriterEmitter.cpp vendor/llvm/dist/utils/TableGen/AsmWriterEmitter.h vendor/llvm/dist/utils/TableGen/CallingConvEmitter.cpp vendor/llvm/dist/utils/TableGen/CallingConvEmitter.h vendor/llvm/dist/utils/TableGen/ClangDiagnosticsEmitter.cpp vendor/llvm/dist/utils/TableGen/ClangDiagnosticsEmitter.h vendor/llvm/dist/utils/TableGen/CodeEmitterGen.cpp vendor/llvm/dist/utils/TableGen/CodeEmitterGen.h vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.cpp vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.h vendor/llvm/dist/utils/TableGen/CodeGenTarget.cpp vendor/llvm/dist/utils/TableGen/CodeGenTarget.h vendor/llvm/dist/utils/TableGen/DAGISelEmitter.cpp vendor/llvm/dist/utils/TableGen/DAGISelEmitter.h vendor/llvm/dist/utils/TableGen/FastISelEmitter.cpp vendor/llvm/dist/utils/TableGen/FastISelEmitter.h vendor/llvm/dist/utils/TableGen/InstrEnumEmitter.cpp vendor/llvm/dist/utils/TableGen/InstrEnumEmitter.h vendor/llvm/dist/utils/TableGen/InstrInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/InstrInfoEmitter.h vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.cpp vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.h vendor/llvm/dist/utils/TableGen/LLVMCConfigurationEmitter.cpp vendor/llvm/dist/utils/TableGen/LLVMCConfigurationEmitter.h vendor/llvm/dist/utils/TableGen/Record.cpp vendor/llvm/dist/utils/TableGen/Record.h vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.h vendor/llvm/dist/utils/TableGen/SubtargetEmitter.cpp vendor/llvm/dist/utils/TableGen/SubtargetEmitter.h vendor/llvm/dist/utils/TableGen/TGLexer.cpp vendor/llvm/dist/utils/TableGen/TGParser.cpp vendor/llvm/dist/utils/TableGen/TGValueTypes.cpp vendor/llvm/dist/utils/TableGen/TableGen.cpp vendor/llvm/dist/utils/TableGen/TableGenBackend.cpp vendor/llvm/dist/utils/TableGen/TableGenBackend.h Modified: vendor/llvm/dist/Makefile.config.in ============================================================================== --- vendor/llvm/dist/Makefile.config.in Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/Makefile.config.in Sat Jul 4 13:58:26 2009 (r195340) @@ -223,7 +223,7 @@ RDYNAMIC := @RDYNAMIC@ #ENABLE_PROFILING = 1 @ENABLE_PROFILING@ -# When DISABLE_ASSERTIONS is enabled, builds of all of the LLVM code will +# When DISABLE_ASSERTIONS is enabled, builds of all of the LLVM code will # exclude assertion checks, otherwise they are included. #DISABLE_ASSERTIONS = 1 @DISABLE_ASSERTIONS@ @@ -297,3 +297,14 @@ endif # Location of the plugin header file for gold. BINUTILS_INCDIR := @BINUTILS_INCDIR@ + +# When ENABLE_LLVMC_DYNAMIC is enabled, LLVMC will link libCompilerDriver +# dynamically. This is needed to make dynamic plugins work on some targets +# (Windows). +ENABLE_LLVMC_DYNAMIC = 0 +#@ENABLE_LLVMC_DYNAMIC@ + +# When ENABLE_LLVMC_DYNAMIC_PLUGINS is enabled, LLVMC will have dynamic plugin +# support (via the -load option). +ENABLE_LLVMC_DYNAMIC_PLUGINS = 1 +#@ENABLE_LLVMC_DYNAMIC_PLUGINS@ Modified: vendor/llvm/dist/Makefile.rules ============================================================================== --- vendor/llvm/dist/Makefile.rules Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/Makefile.rules Sat Jul 4 13:58:26 2009 (r195340) @@ -201,15 +201,19 @@ LIBRARYNAME := $(patsubst %,plugin_llvmc CPP.Flags += -DLLVMC_PLUGIN_NAME=$(LLVMC_PLUGIN) REQUIRES_EH := 1 +ifeq ($(ENABLE_LLVMC_DYNAMIC),1) + LD.Flags += -lCompilerDriver +endif + # Build a dynamic library if the user runs `make` directly from the plugin # directory. ifndef LLVMC_BUILTIN_PLUGIN -LOADABLE_MODULE = 1 + LOADABLE_MODULE = 1 endif # TableGen stuff... ifneq ($(BUILT_SOURCES),) -LLVMC_BUILD_AUTOGENERATED_INC=1 + LLVMC_BUILD_AUTOGENERATED_INC=1 endif endif # LLVMC_PLUGIN @@ -217,10 +221,16 @@ endif # LLVMC_PLUGIN ifdef LLVMC_BASED_DRIVER TOOLNAME = $(LLVMC_BASED_DRIVER) -LLVMLIBS = CompilerDriver.a -LINK_COMPONENTS = support system + REQUIRES_EH := 1 +ifeq ($(ENABLE_LLVMC_DYNAMIC),1) + LD.Flags += -lCompilerDriver +else + LLVMLIBS = CompilerDriver.a + LINK_COMPONENTS = support system +endif + # Preprocessor magic that generates references to static variables in built-in # plugins. ifneq ($(LLVMC_BUILTIN_PLUGINS),) @@ -502,8 +512,7 @@ ifeq ($(OS),Darwin) else ifeq ($(OS),Cygwin) SharedLinkOptions=-shared -nostdlib -Wl,--export-all-symbols \ - -Wl,--enable-auto-import -Wl,--enable-auto-image-base \ - -Wl,--enable-runtime-pseudo-relocs + -Wl,--enable-auto-import -Wl,--enable-auto-image-base else SharedLinkOptions=-shared endif Modified: vendor/llvm/dist/autoconf/configure.ac ============================================================================== --- vendor/llvm/dist/autoconf/configure.ac Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/autoconf/configure.ac Sat Jul 4 13:58:26 2009 (r195340) @@ -240,7 +240,7 @@ case "$llvm_cv_target_arch" in x86_64) LLVM_NATIVE_ARCH="X86" ;; *) LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;; esac - + dnl Define a substitution, ARCH, for the target architecture AC_SUBST(ARCH,$llvm_cv_target_arch) @@ -453,7 +453,7 @@ for a_target in $TARGETS_TO_BUILD; do fi done -# Build the LLVM_TARGET and LLVM_ASM_PRINTER macro uses for +# Build the LLVM_TARGET and LLVM_ASM_PRINTER macro uses for # Targets.def and AsmPrinters.def. LLVM_ENUM_TARGETS="" LLVM_ENUM_ASM_PRINTERS="" @@ -593,6 +593,35 @@ case "$enableval" in *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;; esac +dnl Only Windows needs dynamic libCompilerDriver to support plugins. +if test "$llvm_cv_os_type" = "Win32" ; then + llvmc_dynamic="yes" +else + llvmc_dynamic="no" +fi + +dnl --enable-llvmc-dynamic : should LLVMC link libCompilerDriver dynamically? +AC_ARG_ENABLE(llvmc-dynamic,AS_HELP_STRING( +--enable-llvmc-dynamic, +[Link LLVMC dynamically (default is NO, unless on Win32)]),, +enableval=$llvmc_dynamic) +if test ${enableval} = "yes" && test "$ENABLE_PIC" -eq 1 ; then + AC_SUBST(ENABLE_LLVMC_DYNAMIC,[[ENABLE_LLVMC_DYNAMIC=1]]) +else + AC_SUBST(ENABLE_LLVMC_DYNAMIC,[[]]) +fi + +dnl --enable-llvmc-dynamic-plugins : should LLVMC support dynamic plugins? +AC_ARG_ENABLE(llvmc-dynamic-plugins,AS_HELP_STRING( +--enable-llvmc-dynamic-plugins, +[Enable dynamic LLVMC plugins (default is YES)]),, +enableval=yes) +if test ${enableval} = "yes" ; then + AC_SUBST(ENABLE_LLVMC_DYNAMIC_PLUGINS,[[ENABLE_LLVMC_DYNAMIC_PLUGINS=1]]) +else + AC_SUBST(ENABLE_LLVMC_DYNAMIC_PLUGINS,[[]]) +fi + dnl===-----------------------------------------------------------------------=== dnl=== dnl=== SECTION 4: Check for programs we need and that they are the right version @@ -914,7 +943,8 @@ AC_CHECK_FUNCS([backtrace ceilf floorf r AC_CHECK_FUNCS([powf fmodf strtof round ]) AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ]) AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) -AC_CHECK_FUNCS([mktemp realpath sbrk setrlimit strdup strerror strerror_r ]) +AC_CHECK_FUNCS([mktemp realpath sbrk setrlimit strdup ]) +AC_CHECK_FUNCS([strerror strerror_r strerror_s ]) AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ]) AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp]) AC_C_PRINTF_A @@ -951,7 +981,7 @@ dnl atomic builtins are required for thr AC_MSG_CHECKING(for GCC atomic builtins) AC_LINK_IFELSE( AC_LANG_SOURCE( - [[int main() { + [[int main() { volatile unsigned long val = 1; __sync_synchronize(); __sync_val_compare_and_swap(&val, 1, 0); Modified: vendor/llvm/dist/cmake/config-ix.cmake ============================================================================== --- vendor/llvm/dist/cmake/config-ix.cmake Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/cmake/config-ix.cmake Sat Jul 4 13:58:26 2009 (r195340) @@ -44,6 +44,8 @@ check_include_file(windows.h HAVE_WINDOW # library checks include(CheckLibraryExists) check_library_exists(pthread pthread_create "" HAVE_LIBPTHREAD) +check_library_exists(pthread pthread_getspecific "" HAVE_PTHREAD_GETSPECIFIC) +check_library_exists(pthread pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT) check_library_exists(dl dlopen "" HAVE_LIBDL) # function checks @@ -64,9 +66,10 @@ check_symbol_exists(mallinfo malloc.h HA check_symbol_exists(malloc_zone_statistics malloc/malloc.h HAVE_MALLOC_ZONE_STATISTICS) check_symbol_exists(pthread_mutex_lock pthread.h HAVE_PTHREAD_MUTEX_LOCK) -check_symbol_exists(pthread_rwlock_init pthread.h HAVE_PTHREAD_RWLOCK_INIT) -check_symbol_exists(pthread_getspecific pthread.h HAVE_PTHREAD_GETSPECIFIC) check_symbol_exists(strtoll stdlib.h HAVE_STRTOLL) +check_symbol_exists(strerror string.h HAVE_STRERROR) +check_symbol_exists(strerror_r string.h HAVE_STRERROR_R) +check_symbol_exists(strerror_s string.h HAVE_STRERROR_S) check_symbol_exists(__GLIBC__ stdio.h LLVM_USING_GLIBC) if( LLVM_USING_GLIBC ) Modified: vendor/llvm/dist/configure ============================================================================== --- vendor/llvm/dist/configure Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/configure Sat Jul 4 13:58:26 2009 (r195340) @@ -31356,9 +31356,119 @@ done +for ac_func in mktemp realpath sbrk setrlimit strdup +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + -for ac_func in mktemp realpath sbrk setrlimit strdup strerror strerror_r +for ac_func in strerror strerror_r strerror_s do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 Modified: vendor/llvm/dist/docs/CodingStandards.html ============================================================================== --- vendor/llvm/dist/docs/CodingStandards.html Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/docs/CodingStandards.html Sat Jul 4 13:58:26 2009 (r195340) @@ -50,6 +50,8 @@ <li><a href="#ll_ns_std">Do not use 'using namespace std'</a></li> <li><a href="#ll_virtual_anch">Provide a virtual method anchor for classes in headers</a></li> + <li><a href="#ll_end">Don't evaluate end() every time through a + loop</a></li> <li><a href="#ll_preincrement">Prefer Preincrement</a></li> <li><a href="#ll_avoidendl">Avoid <tt>std::endl</tt></a></li> </ol></li> @@ -661,6 +663,67 @@ increasing link times.</p> </div> +<!-- _______________________________________________________________________ --> +<div class="doc_subsubsection"> + <a name="ll_end">Don't evaluate end() every time through a loop</a> +</div> + +<div class="doc_text"> + +<p>Because C++ doesn't have a standard "foreach" loop (though it can be emulated +with macros and may be coming in C++'0x) we end up writing a lot of loops that +manually iterate from begin to end on a variety of containers or through other +data structures. One common mistake is to write a loop in this style:</p> + +<div class="doc_code"> +<pre> + BasicBlock *BB = ... + for (BasicBlock::iterator I = BB->begin(); I != <b>BB->end()</b>; ++I) + ... use I ... +</pre> +</div> + +<p>The problem with this construct is that it evaluates "<tt>BB->end()</tt>" +every time through the loop. Instead of writing the loop like this, we strongly +prefer loops to be written so that they evaluate it once before the loop starts. +A convenient way to do this is like so:</p> + +<div class="doc_code"> +<pre> + BasicBlock *BB = ... + for (BasicBlock::iterator I = BB->begin(), E = <b>BB->end()</b>; I != E; ++I) + ... use I ... +</pre> +</div> + +<p>The observant may quickly point out that these two loops may have different +semantics: if the container (a basic block in this case) is being mutated, then +"<tt>BB->end()</tt>" may change its value every time through the loop and the +second loop may not in fact be correct. If you actually do depend on this +behavior, please write the loop in the first form and add a comment indicating +that you did it intentionally.</p> + +<p>Why do we prefer the second form (when correct)? Writing the loop in the +first form has two problems: First it may be less efficient than evaluating it +at the start of the loop. In this case, the cost is probably minor: a few extra +loads every time through the loop. However, if the base expression is more +complex, then the cost can rise quickly. I've seen loops where the end +expression was actually something like: "<tt>SomeMap[x]->end()</tt>" and map +lookups really aren't cheap. By writing it in the second form consistently, you +eliminate the issue entirely and don't even have to think about it.</p> + +<p>The second (even bigger) issue is that writing the loop in the first form +hints to the reader that the loop is mutating the container (a fact that a +comment would handily confirm!). If you write the loop in the second form, it +is immediately obvious without even looking at the body of the loop that the +container isn't being modified, which makes it easier to read the code and +understand what it does.</p> + +<p>While the second form of the loop is a few extra keystrokes, we do strongly +prefer it.</p> + +</div> + <!-- _______________________________________________________________________ --> <div class="doc_subsubsection"> @@ -744,7 +807,7 @@ something.</p> <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2009-03-23 05:53:34 +0100 (Mon, 23 Mar 2009) $ + Last modified: $Date: 2009-06-30 08:27:54 +0200 (Tue, 30 Jun 2009) $ </address> </body> Modified: vendor/llvm/dist/docs/CompilerDriver.html ============================================================================== --- vendor/llvm/dist/docs/CompilerDriver.html Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/docs/CompilerDriver.html Sat Jul 4 13:58:26 2009 (r195340) @@ -37,6 +37,7 @@ The ReST source lives in the directory ' <li><a class="reference internal" href="#hooks-and-environment-variables" id="id17">Hooks and environment variables</a></li> <li><a class="reference internal" href="#how-plugins-are-loaded" id="id18">How plugins are loaded</a></li> <li><a class="reference internal" href="#debugging" id="id19">Debugging</a></li> +<li><a class="reference internal" href="#conditioning-on-the-executable-name" id="id20">Conditioning on the executable name</a></li> </ul> </li> </ul> @@ -94,9 +95,8 @@ $ llvmc --linker=c++ hello.o $ ./a.out hello </pre> -<p>By default, LLVMC uses <tt class="docutils literal"><span class="pre">llvm-gcc</span></tt> to compile the source code. It is -also possible to choose the work-in-progress <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> +<p>By default, LLVMC uses <tt class="docutils literal"><span class="pre">llvm-gcc</span></tt> to compile the source code. It is also +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> @@ -633,6 +633,27 @@ be performed at compile-time because the dynamically. When invoked with <tt class="docutils literal"><span class="pre">--check-graph</span></tt>, <tt class="docutils literal"><span class="pre">llvmc</span></tt> doesn't perform any compilation tasks and returns the number of encountered errors as its status code.</p> +</div> +<div class="section" id="conditioning-on-the-executable-name"> +<h2><a class="toc-backref" href="#id20">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"> +namespace llvmc { +extern const char* ProgramName; +} + +std::string MyHook() { +//... +if (strcmp(ProgramName, "mydriver") == 0) { + //... + +} +</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 +the <tt class="docutils literal"><span class="pre">Base</span></tt> plugin behaves when it needs to choose the correct linker options +(think <tt class="docutils literal"><span class="pre">g++</span></tt> vs. <tt class="docutils literal"><span class="pre">gcc</span></tt>).</p> <hr /> <address> <a href="http://jigsaw.w3.org/css-validator/check/referer"> @@ -645,7 +666,7 @@ errors as its status code.</p> <a href="mailto:foldr@codedgers.com">Mikhail Glushenkov</a><br /> <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br /> -Last modified: $Date: 2009-06-25 20:21:10 +0200 (Thu, 25 Jun 2009) $ +Last modified: $Date: 2009-06-30 02:16:43 +0200 (Tue, 30 Jun 2009) $ </address></div> </div> </div> Modified: vendor/llvm/dist/docs/FAQ.html ============================================================================== --- vendor/llvm/dist/docs/FAQ.html Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/docs/FAQ.html Sat Jul 4 13:58:26 2009 (r195340) @@ -124,6 +124,10 @@ <li><a href="#undef">What is this "<tt>undef</tt>" thing that shows up in my code?</a></li> + + <li><a href="#callconvwrong">Why does instcombine + simplifycfg turn + a call to a function with a mismatched calling convention into "unreachable"? + Why not make the verifier reject it?</a></li> </ol> </li> </ol> @@ -780,6 +784,143 @@ int X() { int i; return i; } value specified for it.</p> </div> +<!--=========================================================================--> + +<div class="question"> +<p><a name="callconvwrong">Why does instcombine + simplifycfg turn + a call to a function with a mismatched calling convention into "unreachable"? + Why not make the verifier reject it?</a></p> +</div> + +<div class="answer"> +<p>This is a common problem run into by authors of front-ends that are using +custom calling conventions: you need to make sure to set the right calling +convention on both the function and on each call to the function. For example, +this code:</p> + +<pre class="doc_code"> +define fastcc void @foo() { + ret void +} +define void @bar() { + call void @foo( ) + ret void +} +</pre> + +<p>Is optimized to:</p> + +<pre class="doc_code"> +define fastcc void @foo() { + ret void +} +define void @bar() { + unreachable +} +</pre> + +<p>... with "opt -instcombine -simplifycfg". This often bites people because +"all their code disappears". Setting the calling convention on the caller and +callee is required for indirect calls to work, so people often ask why not make +the verifier reject this sort of thing.</p> + +<p>The answer is that this code has undefined behavior, but it is not illegal. +If we made it illegal, then every transformation that could potentially create +this would have to ensure that it doesn't, and there is valid code that can +create this sort of construct (in dead code). The sorts of things that can +cause this to happen are fairly contrived, but we still need to accept them. +Here's an example:</p> + +<pre class="doc_code"> +define fastcc void @foo() { + ret void +} +define internal void @bar(void()* %FP, i1 %cond) { + br i1 %cond, label %T, label %F +T: + call void %FP() + ret void +F: + call fastcc void %FP() + ret void +} +define void @test() { + %X = or i1 false, false + call void @bar(void()* @foo, i1 %X) + ret void +} +</pre> + +<p>In this example, "test" always passes @foo/false into bar, which ensures that + it is dynamically called with the right calling conv (thus, the code is + perfectly well defined). If you run this through the inliner, you get this + (the explicit "or" is there so that the inliner doesn't dead code eliminate + a bunch of stuff): +</p> + +<pre class="doc_code"> +define fastcc void @foo() { + ret void +} +define void @test() { + %X = or i1 false, false + br i1 %X, label %T.i, label %F.i +T.i: + call void @foo() + br label %bar.exit +F.i: + call fastcc void @foo() + br label %bar.exit +bar.exit: + ret void +} +</pre> + +<p>Here you can see that the inlining pass made an undefined call to @foo with + the wrong calling convention. We really don't want to make the inliner have + to know about this sort of thing, so it needs to be valid code. In this case, + dead code elimination can trivially remove the undefined code. However, if %X + was an input argument to @test, the inliner would produce this: +</p> + +<pre class="doc_code"> +define fastcc void @foo() { + ret void +} + +define void @test(i1 %X) { + br i1 %X, label %T.i, label %F.i +T.i: + call void @foo() + br label %bar.exit +F.i: + call fastcc void @foo() + br label %bar.exit +bar.exit: + ret void +} +</pre> + +<p>The interesting thing about this is that %X <em>must</em> be false for the +code to be well-defined, but no amount of dead code elimination will be able to +delete the broken call as unreachable. However, since instcombine/simplifycfg +turns the undefined call into unreachable, we end up with a branch on a +condition that goes to unreachable: a branch to unreachable can never happen, so +"-inline -instcombine -simplifycfg" is able to produce:</p> + +<pre class="doc_code"> +define fastcc void @foo() { + ret void +} +define void @test(i1 %X) { +F.i: + call fastcc void @foo() + ret void +} +</pre> + +</div> + <!-- *********************************************************************** --> <hr> @@ -790,7 +931,7 @@ int X() { int i; return 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-04-10 22:48:27 +0200 (Fri, 10 Apr 2009) $ + Last modified: $Date: 2009-06-30 19:10:19 +0200 (Tue, 30 Jun 2009) $ </address> </body> Modified: vendor/llvm/dist/docs/ReleaseNotes-2.6.html ============================================================================== --- vendor/llvm/dist/docs/ReleaseNotes-2.6.html Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/docs/ReleaseNotes-2.6.html Sat Jul 4 13:58:26 2009 (r195340) @@ -419,7 +419,7 @@ it run faster:</p> <div class="doc_text"> <p>If you're already an LLVM user or developer with out-of-tree changes based -on LLVM 2.4, this section lists some "gotchas" that you may run into upgrading +on LLVM 2.5, this section lists some "gotchas" that you may run into upgrading from the previous release.</p> <ul> @@ -433,6 +433,13 @@ from the previous release.</p> API changes are:</p> <ul> +<li>LLVM's global uniquing tables for <tt>Type</tt>s and <tt>Constant</tt>s have + been privatized into members of an <tt>LLVMContext</tt>. A number of APIs + now take an <tt>LLVMContext</tt> as a parameter. To smooth the transition + for clients that will only ever use a single context, the new + <tt>getGlobalContext()</tt> API can be used to access a default global + context which can be passed in any and all cases where a context is + required. <li>The <tt>getABITypeSize</tt> methods are now called <tt>getAllocSize</tt>.</li> </ul> @@ -770,7 +777,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-06-24 23:26:42 +0200 (Wed, 24 Jun 2009) $ + Last modified: $Date: 2009-07-02 18:48:38 +0200 (Thu, 02 Jul 2009) $ </address> </body> Modified: vendor/llvm/dist/docs/TableGenFundamentals.html ============================================================================== --- vendor/llvm/dist/docs/TableGenFundamentals.html Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/docs/TableGenFundamentals.html Sat Jul 4 13:58:26 2009 (r195340) @@ -411,7 +411,8 @@ which case the user must specify it expl <dt><tt>!cast<type>(a)</tt></dt> <dd>A symbol of type <em>type</em> obtained by looking up the string 'a' in the symbol table. If the type of 'a' does not match <em>type</em>, TableGen -aborts with an error. </dd> +aborts with an error. !cast<string> is a special case in that the argument must +be an object defined by a 'def' construct.</dd> <dt><tt>!nameconcat<type>(a, b)</tt></dt> <dd>Shorthand for !cast<type>(!strconcat(a, b))</dd> <dt><tt>!subst(a, b, c)</tt></dt> @@ -781,7 +782,7 @@ This should highlight the APIs in <tt>Ta <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2009-06-09 20:31:17 +0200 (Tue, 09 Jun 2009) $ + Last modified: $Date: 2009-06-29 22:05:29 +0200 (Mon, 29 Jun 2009) $ </address> </body> Modified: vendor/llvm/dist/docs/WritingAnLLVMPass.html ============================================================================== --- vendor/llvm/dist/docs/WritingAnLLVMPass.html Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/docs/WritingAnLLVMPass.html Sat Jul 4 13:58:26 2009 (r195340) @@ -491,10 +491,15 @@ class is the most general of all supercl <tt>ModulePass</tt> indicates that your pass uses the entire program as a unit, refering to function bodies in no predictable order, or adding and removing functions. Because nothing is known about the behavior of <tt>ModulePass</tt> -subclasses, no optimization can be done for their execution. A module pass -can use function level passes (e.g. dominators) using getAnalysis interface -<tt> getAnalysis<DominatorTree>(Function)</tt>, if the function pass -does not require any module passes. </p> +subclasses, no optimization can be done for their execution.</p> + +<p>A module pass can use function level passes (e.g. dominators) using +the getAnalysis interface +<tt>getAnalysis<DominatorTree>(llvm::Function *)</tt> to provide the +function to retrieve analysis result for, if the function pass does not require +any module passes. Note that this can only be done for functions for which the +analysis ran, e.g. in the case of dominators you should only ask for the +DominatorTree for function definitions, not declarations.</p> <p>To write a correct <tt>ModulePass</tt> subclass, derive from <tt>ModulePass</tt> and overload the <tt>runOnModule</tt> method with the @@ -1821,7 +1826,7 @@ Despite that, we have kept the LLVM pass <a href="mailto:sabre@nondot.org">Chris Lattner</a><br> <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br> - Last modified: $Date: 2009-06-15 18:22:49 +0000 (Mon, 15 Jun 2009) $ + Last modified: $Date: 2009-07-02 01:38:44 +0200 (Thu, 02 Jul 2009) $ </address> </body> Modified: vendor/llvm/dist/examples/BrainF/BrainF.cpp ============================================================================== --- vendor/llvm/dist/examples/BrainF/BrainF.cpp Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/BrainF/BrainF.cpp Sat Jul 4 13:58:26 2009 (r195340) @@ -36,19 +36,20 @@ const char *BrainF::headreg = "head"; const char *BrainF::label = "brainf"; const char *BrainF::testreg = "test"; -Module *BrainF::parse(std::istream *in1, int mem, CompileFlags cf) { +Module *BrainF::parse(std::istream *in1, int mem, CompileFlags cf, + LLVMContext& Context) { in = in1; memtotal = mem; comflag = cf; - header(); + header(Context); readloop(0, 0, 0); delete builder; return module; } -void BrainF::header() { - module = new Module("BrainF"); +void BrainF::header(LLVMContext& C) { + module = new Module("BrainF", C); //Function prototypes Modified: vendor/llvm/dist/examples/BrainF/BrainF.h ============================================================================== --- vendor/llvm/dist/examples/BrainF/BrainF.h Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/BrainF/BrainF.h Sat Jul 4 13:58:26 2009 (r195340) @@ -15,6 +15,7 @@ #ifndef BRAINF_H #define BRAINF_H +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/Support/IRBuilder.h" @@ -38,7 +39,8 @@ class BrainF { /// containing the resulting code. /// On error, it calls abort. /// The caller must delete the returned module. - Module *parse(std::istream *in1, int mem, CompileFlags cf); + Module *parse(std::istream *in1, int mem, CompileFlags cf, + LLVMContext& C); protected: /// The different symbols in the BrainF language @@ -64,7 +66,7 @@ class BrainF { static const char *testreg; /// Put the brainf function preamble and other fixed pieces of code - void header(); + void header(LLVMContext& C); /// The main loop for parsing. It calls itself recursively /// to handle the depth of nesting of "[]". Modified: vendor/llvm/dist/examples/BrainF/BrainFDriver.cpp ============================================================================== --- vendor/llvm/dist/examples/BrainF/BrainFDriver.cpp Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/BrainF/BrainFDriver.cpp Sat Jul 4 13:58:26 2009 (r195340) @@ -86,6 +86,8 @@ void addMainFunction(Module *mod) { int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, " BrainF compiler\n"); + LLVMContext Context; + if (InputFilename == "") { std::cerr<<"Error: You must specify the filename of the program to " "be compiled. Use --help to see the options.\n"; @@ -124,7 +126,7 @@ int main(int argc, char **argv) { //Read the BrainF program BrainF bf; - Module *mod = bf.parse(in, 65536, cf); //64 KiB + Module *mod = bf.parse(in, 65536, cf, Context); //64 KiB if (in != &std::cin) {delete in;} addMainFunction(mod); Modified: vendor/llvm/dist/examples/Fibonacci/fibonacci.cpp ============================================================================== --- vendor/llvm/dist/examples/Fibonacci/fibonacci.cpp Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/Fibonacci/fibonacci.cpp Sat Jul 4 13:58:26 2009 (r195340) @@ -23,6 +23,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/DerivedTypes.h" #include "llvm/Constants.h" @@ -90,8 +91,10 @@ static Function *CreateFibFunction(Modul int main(int argc, char **argv) { int n = argc > 1 ? atol(argv[1]) : 24; + LLVMContext Context; + // Create some module to put our function into it. - Module *M = new Module("test"); + Module *M = new Module("test", Context); // We are about to create the "fib" function: Function *FibF = CreateFibFunction(M); Modified: vendor/llvm/dist/examples/HowToUseJIT/HowToUseJIT.cpp ============================================================================== --- vendor/llvm/dist/examples/HowToUseJIT/HowToUseJIT.cpp Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/HowToUseJIT/HowToUseJIT.cpp Sat Jul 4 13:58:26 2009 (r195340) @@ -34,6 +34,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" @@ -50,9 +51,11 @@ using namespace llvm; int main() { InitializeNativeTarget(); + + LLVMContext Context; // Create some module to put our function into it. - Module *M = new Module("test"); + Module *M = new Module("test", Context); // Create the add1 function entry and insert this entry into module M. The // function will have a return type of "int" and take an argument of "int". Modified: vendor/llvm/dist/examples/Kaleidoscope/toy.cpp ============================================================================== --- vendor/llvm/dist/examples/Kaleidoscope/toy.cpp Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/Kaleidoscope/toy.cpp Sat Jul 4 13:58:26 2009 (r195340) @@ -1,5 +1,6 @@ #include "llvm/DerivedTypes.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/PassManager.h" @@ -1083,6 +1084,7 @@ double printd(double X) { int main() { InitializeNativeTarget(); + LLVMContext Context; // Install standard binary operators. // 1 is lowest precedence. @@ -1097,7 +1099,7 @@ int main() { getNextToken(); // Make the module, which holds all the code. - TheModule = new Module("my cool jit"); + TheModule = new Module("my cool jit", Context); // Create the JIT. TheExecutionEngine = ExecutionEngine::create(TheModule); Modified: vendor/llvm/dist/examples/ModuleMaker/ModuleMaker.cpp ============================================================================== --- vendor/llvm/dist/examples/ModuleMaker/ModuleMaker.cpp Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/ModuleMaker/ModuleMaker.cpp Sat Jul 4 13:58:26 2009 (r195340) @@ -13,6 +13,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/DerivedTypes.h" #include "llvm/Constants.h" @@ -22,13 +23,14 @@ using namespace llvm; int main() { + LLVMContext Context; + // Create the "module" or "program" or "translation unit" to hold the // function - Module *M = new Module("test"); + Module *M = new Module("test", Context); // Create the main function: first create the type 'int ()' - FunctionType *FT = FunctionType::get(Type::Int32Ty, std::vector<const Type*>(), - /*not vararg*/false); + FunctionType *FT = FunctionType::get(Type::Int32Ty, /*not vararg*/false); // By passing a module as the last parameter to the Function constructor, // it automatically gets appended to the Module. Modified: vendor/llvm/dist/examples/ParallelJIT/ParallelJIT.cpp ============================================================================== --- vendor/llvm/dist/examples/ParallelJIT/ParallelJIT.cpp Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/examples/ParallelJIT/ParallelJIT.cpp Sat Jul 4 13:58:26 2009 (r195340) @@ -18,6 +18,7 @@ // same time). This test had assertion errors until I got the locking right. #include <pthread.h> +#include "llvm/LLVMContext.h" #include "llvm/Module.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" @@ -232,9 +233,10 @@ void* callFunc( void* param ) int main() { InitializeNativeTarget(); + LLVMContext Context; // Create some module to put our function into it. - Module *M = new Module("test"); + Module *M = new Module("test", Context); Function* add1F = createAdd1( M ); Function* fibF = CreateFibFunction( M ); Modified: vendor/llvm/dist/include/llvm-c/BitReader.h ============================================================================== --- vendor/llvm/dist/include/llvm-c/BitReader.h Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/include/llvm-c/BitReader.h Sat Jul 4 13:58:26 2009 (r195340) @@ -32,6 +32,10 @@ extern "C" { int LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutModule, char **OutMessage); +int LLVMParseBitcodeInContext(LLVMMemoryBufferRef MemBuf, + LLVMContextRef ContextRef, + LLVMModuleRef *OutModule, char **OutMessage); + /* Reads a module from the specified path, returning via the OutMP parameter a module provider which performs lazy deserialization. Returns 0 on success. Optionally returns a human-readable error message via OutMessage. */ @@ -39,6 +43,11 @@ int LLVMGetBitcodeModuleProvider(LLVMMem LLVMModuleProviderRef *OutMP, char **OutMessage); +int LLVMGetBitcodeModuleProviderInContext(LLVMMemoryBufferRef MemBuf, + LLVMContextRef ContextRef, + LLVMModuleProviderRef *OutMP, + char **OutMessage); + #ifdef __cplusplus } Modified: vendor/llvm/dist/include/llvm-c/Core.h ============================================================================== --- vendor/llvm/dist/include/llvm-c/Core.h Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/include/llvm-c/Core.h Sat Jul 4 13:58:26 2009 (r195340) @@ -47,6 +47,11 @@ extern "C" { /* Opaque types. */ /** + * The top-level container for all LLVM global data. See the LLVMContext class. + */ +typedef struct LLVMCtxt *LLVMContextRef; + +/** * The top-level container for all other LLVM Intermediate Representation (IR) * objects. See the llvm::Module class. */ @@ -188,9 +193,16 @@ void LLVMDisposeMessage(char *Message); /*===-- Modules -----------------------------------------------------------===*/ +/* Create and destroy contexts. */ +LLVMContextRef LLVMContextCreate(); +LLVMContextRef LLVMGetGlobalContext(); +void LLVMContextDispose(LLVMContextRef C); + /* Create and destroy modules. */ /** See llvm::Module::Module. */ LLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID); +LLVMModuleRef LLVMModuleCreateWithNameInContext(const char *ModuleID, + LLVMContextRef C); /** See llvm::Module::~Module. */ void LLVMDisposeModule(LLVMModuleRef M); @@ -815,6 +827,7 @@ namespace llvm { DEFINE_SIMPLE_CONVERSION_FUNCTIONS(PATypeHolder, LLVMTypeHandleRef ) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ModuleProvider, LLVMModuleProviderRef) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(MemoryBuffer, LLVMMemoryBufferRef ) + DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LLVMContext, LLVMContextRef ) DEFINE_STDCXX_CONVERSION_FUNCTIONS(PassManagerBase, LLVMPassManagerRef ) #undef DEFINE_STDCXX_CONVERSION_FUNCTIONS Modified: vendor/llvm/dist/include/llvm-c/lto.h ============================================================================== --- vendor/llvm/dist/include/llvm-c/lto.h Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/include/llvm-c/lto.h Sat Jul 4 13:58:26 2009 (r195340) @@ -16,6 +16,7 @@ #ifndef LTO_H #define LTO_H 1 +#include "llvm-c/Core.h" #include <stdbool.h> #include <stddef.h> @@ -58,7 +59,6 @@ typedef struct LTOModule* lto_mo /** opaque reference to a code generator */ typedef struct LTOCodeGenerator* lto_code_gen_t; - #ifdef __cplusplus extern "C" { #endif @@ -76,7 +76,6 @@ lto_get_version(void); extern const char* lto_get_error_message(void); - /** * Checks if a file is a loadable object file. */ Modified: vendor/llvm/dist/include/llvm/ADT/APInt.h ============================================================================== --- vendor/llvm/dist/include/llvm/ADT/APInt.h Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/include/llvm/ADT/APInt.h Sat Jul 4 13:58:26 2009 (r195340) @@ -1426,6 +1426,8 @@ inline raw_ostream &operator<<(raw_ostre return OS; } +std::ostream &operator<<(std::ostream &o, const APInt &I); + namespace APIntOps { /// @brief Determine the smaller of two APInts considered to be signed. Modified: vendor/llvm/dist/include/llvm/ADT/FoldingSet.h ============================================================================== --- vendor/llvm/dist/include/llvm/ADT/FoldingSet.h Sat Jul 4 11:11:21 2009 (r195339) +++ vendor/llvm/dist/include/llvm/ADT/FoldingSet.h Sat Jul 4 13:58:26 2009 (r195340) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907041358.n64DwQFg014366>