From 522600a229b950314b5f4af84eba4f3e8a0ffea1 Mon Sep 17 00:00:00 2001
From: Dimitry Andric
Date: Sun, 2 Dec 2012 13:10:19 +0000
Subject: Vendor import of llvm release_32 branch r168974 (effectively, 3.2
RC2): http://llvm.org/svn/llvm-project/llvm/branches/release_32@168974
---
.gitignore | 2 +
CMakeLists.txt | 31 +-
CREDITS.TXT | 16 +-
Makefile | 10 +-
Makefile.config.in | 1 +
Makefile.rules | 38 +-
autoconf/configure.ac | 73 +-
.../ocaml/executionengine/executionengine_ocaml.c | 3 +
.../ocaml/executionengine/llvm_executionengine.ml | 2 +-
.../ocaml/executionengine/llvm_executionengine.mli | 2 +-
bindings/ocaml/llvm/llvm.mli | 2 +-
bindings/ocaml/llvm/llvm_ocaml.c | 3 +
bindings/ocaml/target/llvm_target.ml | 26 +-
bindings/ocaml/target/llvm_target.mli | 56 +-
bindings/ocaml/target/target_ocaml.c | 30 +-
cmake/config-ix.cmake | 23 +-
cmake/modules/AddLLVM.cmake | 25 +-
cmake/modules/LLVMProcessSources.cmake | 2 +-
cmake/platforms/Android.cmake | 21 +
configure | 369 +-
docs/AliasAnalysis.rst | 2 +-
docs/BitCodeFormat.rst | 49 +-
docs/CMake.rst | 5 -
docs/CodeGenerator.rst | 33 +-
docs/CodingStandards.rst | 253 +-
docs/CommandGuide/FileCheck.rst | 10 +-
docs/CommandGuide/lit.rst | 13 +
docs/CompilerWriterInfo.html | 267 --
docs/CompilerWriterInfo.rst | 118 +
docs/DebuggingJITedCode.html | 184 -
docs/DebuggingJITedCode.rst | 147 +
docs/DeveloperPolicy.rst | 5 +-
docs/ExtendingLLVM.html | 379 --
docs/ExtendingLLVM.rst | 306 ++
docs/GarbageCollection.html | 6 +-
docs/GettingStarted.html | 1760 ---------
docs/GettingStarted.rst | 1304 +++++++
docs/GoldPlugin.html | 227 --
docs/GoldPlugin.rst | 186 +
docs/HowToAddABuilder.html | 142 -
docs/HowToAddABuilder.rst | 90 +
docs/HowToBuildOnARM.rst | 47 +
docs/HowToSetUpLLVMStyleRTTI.rst | 332 ++
docs/HowToSubmitABug.html | 345 --
docs/HowToSubmitABug.rst | 233 ++
docs/HowToUseInstrMappings.rst | 179 +
docs/LangRef.html | 107 +-
docs/Lexicon.rst | 13 +-
docs/LinkTimeOptimization.rst | 2 +
docs/Makefile.sphinx | 4 +
docs/MarkedUpDisassembly.rst | 88 +
docs/Passes.html | 39 +-
docs/Phabricator.rst | 100 +
docs/ProgrammersManual.html | 29 +-
docs/README.txt | 2 +-
docs/ReleaseNotes.html | 101 +-
docs/SourceLevelDebugging.html | 8 +-
docs/SphinxQuickstartTemplate.rst | 125 +
docs/TestingGuide.html | 23 +-
docs/WritingAnLLVMBackend.html | 36 +-
docs/_themes/llvm-theme/layout.html | 23 +
docs/_themes/llvm-theme/static/contents.png | Bin 0 -> 202 bytes
docs/_themes/llvm-theme/static/llvm-theme.css | 371 ++
docs/_themes/llvm-theme/static/logo.png | Bin 0 -> 9864 bytes
docs/_themes/llvm-theme/static/navigation.png | Bin 0 -> 218 bytes
docs/_themes/llvm-theme/theme.conf | 4 +
docs/conf.py | 21 +-
docs/index.rst | 46 +-
docs/llvm-theme/layout.html | 23 -
docs/llvm-theme/static/contents.png | Bin 202 -> 0 bytes
docs/llvm-theme/static/llvm-theme.css | 374 --
docs/llvm-theme/static/logo.png | Bin 9864 -> 0 bytes
docs/llvm-theme/static/navigation.png | Bin 218 -> 0 bytes
docs/llvm-theme/theme.conf | 4 -
docs/programming.rst | 19 +-
docs/subsystems.rst | 19 +-
docs/tutorial/LangImpl4.html | 8 +-
docs/tutorial/LangImpl5.html | 6 +-
docs/tutorial/LangImpl6.html | 6 +-
docs/tutorial/LangImpl7.html | 8 +-
docs/tutorial/OCamlLangImpl4.html | 6 +-
docs/tutorial/OCamlLangImpl5.html | 4 +-
docs/tutorial/OCamlLangImpl6.html | 4 +-
docs/tutorial/OCamlLangImpl7.html | 6 +-
docs/userguides.rst | 23 +-
docs/yaml2obj.rst | 4 +-
examples/ExceptionDemo/ExceptionDemo.cpp | 1181 +++---
examples/Fibonacci/fibonacci.cpp | 2 +-
examples/Kaleidoscope/Chapter4/toy.cpp | 4 +-
examples/Kaleidoscope/Chapter5/toy.cpp | 4 +-
examples/Kaleidoscope/Chapter6/toy.cpp | 4 +-
examples/Kaleidoscope/Chapter7/toy.cpp | 4 +-
examples/OCaml-Kaleidoscope/Chapter4/toy.ml | 2 +-
examples/OCaml-Kaleidoscope/Chapter5/toy.ml | 2 +-
examples/OCaml-Kaleidoscope/Chapter6/toy.ml | 2 +-
examples/OCaml-Kaleidoscope/Chapter7/toy.ml | 2 +-
include/llvm-c/Core.h | 39 +-
include/llvm-c/Disassembler.h | 9 +
include/llvm-c/Target.h | 46 +-
include/llvm-c/TargetMachine.h | 2 +-
include/llvm-c/Transforms/Vectorize.h | 3 +
include/llvm/ADT/APFloat.h | 11 +-
include/llvm/ADT/APInt.h | 29 +-
include/llvm/ADT/ArrayRef.h | 13 +-
include/llvm/ADT/BitVector.h | 86 +-
include/llvm/ADT/DAGDeltaAlgorithm.h | 15 +-
include/llvm/ADT/DeltaAlgorithm.h | 14 +-
include/llvm/ADT/DenseMap.h | 11 +-
include/llvm/ADT/DenseMapInfo.h | 6 +-
include/llvm/ADT/EquivalenceClasses.h | 2 +
include/llvm/ADT/FoldingSet.h | 9 +
include/llvm/ADT/Hashing.h | 3 +-
include/llvm/ADT/ImmutableList.h | 5 +-
include/llvm/ADT/ImmutableMap.h | 4 +-
include/llvm/ADT/ImmutableSet.h | 81 +-
include/llvm/ADT/MapVector.h | 90 +
include/llvm/ADT/Optional.h | 9 +
include/llvm/ADT/OwningPtr.h | 27 +-
include/llvm/ADT/PackedVector.h | 27 +-
include/llvm/ADT/PointerIntPair.h | 4 +-
include/llvm/ADT/ScopedHashTable.h | 4 +-
include/llvm/ADT/SetVector.h | 92 +-
include/llvm/ADT/SmallBitVector.h | 30 +
include/llvm/ADT/SmallPtrSet.h | 7 +-
include/llvm/ADT/SmallString.h | 100 +-
include/llvm/ADT/SmallVector.h | 156 +-
include/llvm/ADT/SparseBitVector.h | 18 +-
include/llvm/ADT/SparseSet.h | 10 +-
include/llvm/ADT/StringExtras.h | 23 +-
include/llvm/ADT/StringRef.h | 163 +-
include/llvm/ADT/StringSet.h | 9 +-
include/llvm/ADT/Trie.h | 334 --
include/llvm/ADT/Triple.h | 34 +-
include/llvm/ADT/Twine.h | 28 +-
include/llvm/ADT/ValueMap.h | 4 +-
include/llvm/ADT/ilist.h | 5 +-
include/llvm/AddressingMode.h | 41 +
include/llvm/Analysis/AliasAnalysis.h | 26 +-
include/llvm/Analysis/AliasSetTracker.h | 5 +-
include/llvm/Analysis/BranchProbabilityInfo.h | 38 +-
include/llvm/Analysis/CallGraph.h | 6 +-
include/llvm/Analysis/CaptureTracking.h | 2 +-
include/llvm/Analysis/CodeMetrics.h | 8 +-
include/llvm/Analysis/ConstantFolding.h | 16 +-
include/llvm/Analysis/DependenceAnalysis.h | 885 +++++
include/llvm/Analysis/Dominators.h | 2 +-
include/llvm/Analysis/IVUsers.h | 4 +-
include/llvm/Analysis/InlineCost.h | 11 +-
include/llvm/Analysis/InstructionSimplify.h | 54 +-
include/llvm/Analysis/IntervalPartition.h | 4 +-
include/llvm/Analysis/LazyValueInfo.h | 8 +-
include/llvm/Analysis/Loads.h | 4 +-
include/llvm/Analysis/LoopDependenceAnalysis.h | 124 -
include/llvm/Analysis/LoopInfo.h | 15 +-
include/llvm/Analysis/LoopInfoImpl.h | 1 -
include/llvm/Analysis/MemoryBuiltins.h | 70 +-
include/llvm/Analysis/MemoryDependenceAnalysis.h | 6 +-
include/llvm/Analysis/PHITransAddr.h | 6 +-
include/llvm/Analysis/Passes.h | 23 +-
include/llvm/Analysis/ProfileDataLoader.h | 139 +
include/llvm/Analysis/ProfileDataTypes.h | 39 +
include/llvm/Analysis/ProfileInfoTypes.h | 10 +-
include/llvm/Analysis/RegionInfo.h | 39 +-
include/llvm/Analysis/ScalarEvolution.h | 10 +-
include/llvm/Analysis/ScalarEvolutionExpressions.h | 14 -
include/llvm/Analysis/SparsePropagation.h | 6 +-
include/llvm/Analysis/ValueTracking.h | 26 +-
include/llvm/Argument.h | 5 +-
include/llvm/Attributes.h | 553 +--
include/llvm/BasicBlock.h | 5 +-
include/llvm/Bitcode/Archive.h | 14 +-
include/llvm/Bitcode/BitstreamReader.h | 8 +-
include/llvm/Bitcode/BitstreamWriter.h | 4 +-
include/llvm/Bitcode/LLVMBitCodes.h | 7 +-
include/llvm/CallingConv.h | 24 +-
include/llvm/CodeGen/AsmPrinter.h | 10 +-
include/llvm/CodeGen/CallingConvLower.h | 2 +
include/llvm/CodeGen/CommandFlags.h | 228 ++
include/llvm/CodeGen/FastISel.h | 4 +-
include/llvm/CodeGen/GCMetadata.h | 5 +
include/llvm/CodeGen/GCMetadataPrinter.h | 7 +-
include/llvm/CodeGen/ISDOpcodes.h | 4 +
include/llvm/CodeGen/IntrinsicLowering.h | 6 +-
include/llvm/CodeGen/LiveInterval.h | 35 +-
include/llvm/CodeGen/LiveIntervalAnalysis.h | 49 +-
include/llvm/CodeGen/LiveVariables.h | 6 -
include/llvm/CodeGen/MachineBasicBlock.h | 26 +-
.../llvm/CodeGen/MachineBranchProbabilityInfo.h | 9 +-
include/llvm/CodeGen/MachineConstantPool.h | 6 +-
include/llvm/CodeGen/MachineFrameInfo.h | 27 +-
include/llvm/CodeGen/MachineFunction.h | 12 +-
include/llvm/CodeGen/MachineInstr.h | 83 +-
include/llvm/CodeGen/MachineInstrBuilder.h | 17 +-
include/llvm/CodeGen/MachineInstrBundle.h | 40 +-
include/llvm/CodeGen/MachineJumpTableInfo.h | 6 +-
include/llvm/CodeGen/MachineLoopInfo.h | 4 +-
include/llvm/CodeGen/MachineMemOperand.h | 9 +
include/llvm/CodeGen/MachineModuleInfoImpls.h | 4 +-
include/llvm/CodeGen/MachineOperand.h | 49 +-
include/llvm/CodeGen/MachinePostDominators.h | 87 +
include/llvm/CodeGen/MachineRegisterInfo.h | 80 +-
include/llvm/CodeGen/MachineSSAUpdater.h | 6 +-
include/llvm/CodeGen/MachineScheduler.h | 237 ++
include/llvm/CodeGen/PBQP/Graph.h | 21 +-
include/llvm/CodeGen/PBQP/HeuristicBase.h | 5 +-
include/llvm/CodeGen/Passes.h | 4 +
include/llvm/CodeGen/PseudoSourceValue.h | 4 -
include/llvm/CodeGen/RegAllocPBQP.h | 4 +-
include/llvm/CodeGen/RegisterClassInfo.h | 19 -
include/llvm/CodeGen/RegisterPressure.h | 3 +-
include/llvm/CodeGen/RegisterScavenging.h | 9 +-
include/llvm/CodeGen/ScheduleDAG.h | 99 +-
include/llvm/CodeGen/ScheduleDAGILP.h | 86 +
include/llvm/CodeGen/ScheduleDAGInstrs.h | 114 +-
include/llvm/CodeGen/SchedulerRegistry.h | 5 +
include/llvm/CodeGen/SelectionDAG.h | 16 +-
include/llvm/CodeGen/SelectionDAGNodes.h | 65 +-
include/llvm/CodeGen/TargetSchedule.h | 167 +
include/llvm/CodeGen/ValueTypes.h | 128 +-
include/llvm/CodeGen/ValueTypes.td | 62 +-
include/llvm/Config/AsmParsers.def.in | 42 +-
include/llvm/Config/AsmPrinters.def.in | 42 +-
include/llvm/Config/Disassemblers.def.in | 42 +-
include/llvm/Config/config.h.cmake | 9 +-
include/llvm/Config/config.h.in | 3 +
include/llvm/Constant.h | 9 +-
include/llvm/Constants.h | 56 +-
include/llvm/DIBuilder.h | 43 +-
include/llvm/DataLayout.h | 429 +++
include/llvm/DebugInfo.h | 12 +-
include/llvm/DebugInfo/DIContext.h | 36 +-
include/llvm/DefaultPasses.h | 2 +-
include/llvm/DerivedTypes.h | 35 +-
include/llvm/ExecutionEngine/ExecutionEngine.h | 19 +-
.../llvm/ExecutionEngine/IntelJITEventsWrapper.h | 102 -
include/llvm/ExecutionEngine/JITEventListener.h | 15 +
include/llvm/ExecutionEngine/JITMemoryManager.h | 31 +-
include/llvm/ExecutionEngine/ObjectBuffer.h | 80 +
include/llvm/ExecutionEngine/ObjectImage.h | 61 +
include/llvm/ExecutionEngine/RuntimeDyld.h | 47 +-
include/llvm/Function.h | 85 +-
include/llvm/GlobalAlias.h | 5 +-
include/llvm/GlobalValue.h | 32 +-
include/llvm/GlobalVariable.h | 7 +-
include/llvm/IRBuilder.h | 69 +-
include/llvm/InitializePasses.h | 13 +-
include/llvm/InlineAsm.h | 30 +-
include/llvm/InstrTypes.h | 29 +-
include/llvm/Instruction.h | 5 +-
include/llvm/Instructions.h | 437 ++-
include/llvm/IntrinsicInst.h | 58 +-
include/llvm/Intrinsics.h | 4 +-
include/llvm/Intrinsics.td | 12 +-
include/llvm/IntrinsicsARM.td | 437 ++-
include/llvm/IntrinsicsMips.td | 125 +
include/llvm/IntrinsicsX86.td | 82 +-
include/llvm/LLVMContext.h | 10 +-
include/llvm/LinkAllPasses.h | 8 +-
include/llvm/MC/MCAsmBackend.h | 24 +-
include/llvm/MC/MCAsmInfo.h | 20 +-
include/llvm/MC/MCAssembler.h | 38 +-
include/llvm/MC/MCCodeEmitter.h | 10 +-
include/llvm/MC/MCContext.h | 5 +-
include/llvm/MC/MCDwarf.h | 11 +-
include/llvm/MC/MCELFObjectWriter.h | 9 +-
include/llvm/MC/MCExpr.h | 21 +-
include/llvm/MC/MCInst.h | 2 +-
include/llvm/MC/MCInstPrinter.h | 13 +-
include/llvm/MC/MCInstrDesc.h | 2 +-
include/llvm/MC/MCLabel.h | 8 +-
include/llvm/MC/MCMachObjectWriter.h | 6 +-
include/llvm/MC/MCObjectFileInfo.h | 3 +-
include/llvm/MC/MCObjectStreamer.h | 10 +
include/llvm/MC/MCObjectWriter.h | 5 +-
include/llvm/MC/MCParser/AsmLexer.h | 4 +-
include/llvm/MC/MCParser/MCAsmLexer.h | 14 +-
include/llvm/MC/MCParser/MCAsmParser.h | 38 +-
include/llvm/MC/MCParser/MCAsmParserExtension.h | 8 +-
include/llvm/MC/MCParser/MCParsedAsmOperand.h | 54 +
include/llvm/MC/MCRegisterInfo.h | 9 +-
include/llvm/MC/MCSchedule.h | 141 +-
include/llvm/MC/MCSection.h | 8 +-
include/llvm/MC/MCSectionCOFF.h | 1 -
include/llvm/MC/MCSectionELF.h | 1 -
include/llvm/MC/MCSectionMachO.h | 1 -
include/llvm/MC/MCStreamer.h | 24 +-
include/llvm/MC/MCSubtargetInfo.h | 65 +-
include/llvm/MC/MCSymbol.h | 11 +-
include/llvm/MC/MCTargetAsmLexer.h | 10 +-
include/llvm/MC/MCTargetAsmParser.h | 77 +-
include/llvm/MC/MCValue.h | 2 +-
include/llvm/MC/SubtargetFeature.h | 6 +-
include/llvm/MDBuilder.h | 21 +
include/llvm/Metadata.h | 10 +-
include/llvm/Object/Archive.h | 1 -
include/llvm/Object/Binary.h | 5 +-
include/llvm/Object/COFF.h | 3 +-
include/llvm/Object/ELF.h | 370 +-
include/llvm/Object/MachO.h | 3 +-
include/llvm/Object/MachOFormat.h | 10 +-
include/llvm/Object/ObjectFile.h | 43 +-
include/llvm/Object/RelocVisitor.h | 131 +
include/llvm/Operator.h | 50 +-
include/llvm/Pass.h | 5 +-
include/llvm/PassAnalysisSupport.h | 2 +-
include/llvm/PassSupport.h | 4 +-
include/llvm/Support/AlignOf.h | 65 +-
include/llvm/Support/Allocator.h | 8 +-
include/llvm/Support/CallSite.h | 36 +-
include/llvm/Support/Casting.h | 16 +-
include/llvm/Support/CommandLine.h | 17 +-
include/llvm/Support/Compiler.h | 35 +-
include/llvm/Support/DataExtractor.h | 5 +-
include/llvm/Support/ELF.h | 60 +-
include/llvm/Support/FileOutputBuffer.h | 7 +-
include/llvm/Support/FileSystem.h | 78 +-
include/llvm/Support/Format.h | 40 +-
include/llvm/Support/FormattedStream.h | 11 +-
include/llvm/Support/GCOV.h | 32 +-
include/llvm/Support/InstVisitor.h | 6 +
include/llvm/Support/IntegersSubset.h | 8 +-
include/llvm/Support/IntegersSubsetMapping.h | 18 +-
include/llvm/Support/LEB128.h | 2 +-
include/llvm/Support/LockFileManager.h | 4 +-
include/llvm/Support/MathExtras.h | 31 +-
include/llvm/Support/Memory.h | 65 +
include/llvm/Support/MemoryBuffer.h | 5 +-
include/llvm/Support/Mutex.h | 5 +-
include/llvm/Support/MutexGuard.h | 4 +-
include/llvm/Support/PathV1.h | 4 +-
include/llvm/Support/PathV2.h | 113 +-
include/llvm/Support/PrettyStackTrace.h | 10 +-
include/llvm/Support/Program.h | 4 +-
include/llvm/Support/RWMutex.h | 5 +-
include/llvm/Support/Regex.h | 8 +-
include/llvm/Support/Registry.h | 7 +-
include/llvm/Support/SourceMgr.h | 8 +-
include/llvm/Support/StreamableMemoryObject.h | 20 +-
include/llvm/Support/TargetFolder.h | 15 +-
include/llvm/Support/TargetRegistry.h | 44 +-
include/llvm/Support/Threading.h | 4 +-
include/llvm/Support/TimeValue.h | 7 +-
include/llvm/Support/Timer.h | 7 +-
include/llvm/Support/ValueHandle.h | 4 +-
include/llvm/Support/YAMLParser.h | 13 +-
include/llvm/Support/circular_raw_ostream.h | 4 +-
include/llvm/Support/raw_os_ostream.h | 10 +-
include/llvm/Support/raw_ostream.h | 64 +-
include/llvm/Support/system_error.h | 8 +-
include/llvm/Support/type_traits.h | 10 +-
include/llvm/SymbolTableListTraits.h | 1 -
include/llvm/TableGen/Error.h | 19 +-
include/llvm/TableGen/Main.h | 9 +-
include/llvm/TableGen/Record.h | 486 ++-
include/llvm/TableGen/TableGenAction.h | 35 -
include/llvm/Target/Mangler.h | 9 +-
include/llvm/Target/Target.td | 104 +-
include/llvm/Target/TargetCallingConv.h | 27 +-
include/llvm/Target/TargetData.h | 363 --
include/llvm/Target/TargetELFWriterInfo.h | 121 -
include/llvm/Target/TargetInstrInfo.h | 37 +-
include/llvm/Target/TargetIntrinsicInfo.h | 5 +-
include/llvm/Target/TargetLibraryInfo.h | 103 +
include/llvm/Target/TargetLowering.h | 131 +-
include/llvm/Target/TargetLoweringObjectFile.h | 9 +-
include/llvm/Target/TargetMachine.h | 20 +-
include/llvm/Target/TargetOpcodes.h | 6 +-
include/llvm/Target/TargetOptions.h | 4 +
include/llvm/Target/TargetRegisterInfo.h | 62 +-
include/llvm/Target/TargetSchedule.td | 340 +-
include/llvm/Target/TargetSelectionDAG.td | 4 +-
include/llvm/Target/TargetSelectionDAGInfo.h | 10 +-
include/llvm/Target/TargetSubtargetInfo.h | 23 +-
include/llvm/Target/TargetTransformImpl.h | 98 +
include/llvm/TargetTransformInfo.h | 204 ++
include/llvm/Transforms/IPO.h | 25 +-
include/llvm/Transforms/IPO/InlinerPass.h | 2 +-
include/llvm/Transforms/IPO/PassManagerBuilder.h | 1 +
include/llvm/Transforms/Instrumentation.h | 2 +-
include/llvm/Transforms/Scalar.h | 6 +
include/llvm/Transforms/Utils/AddrModeMatcher.h | 3 +-
include/llvm/Transforms/Utils/BasicBlockUtils.h | 28 +-
include/llvm/Transforms/Utils/BuildLibCalls.h | 32 +-
include/llvm/Transforms/Utils/BypassSlowDivision.h | 33 +
include/llvm/Transforms/Utils/Cloning.h | 15 +-
include/llvm/Transforms/Utils/IntegerDivision.h | 48 +
include/llvm/Transforms/Utils/Local.h | 30 +-
include/llvm/Transforms/Utils/SSAUpdater.h | 4 +-
include/llvm/Transforms/Utils/SimplifyIndVar.h | 2 -
include/llvm/Transforms/Utils/SimplifyLibCalls.h | 52 +
include/llvm/Transforms/Utils/ValueMapper.h | 2 +-
include/llvm/Transforms/Vectorize.h | 6 +
include/llvm/Type.h | 23 +-
include/llvm/Use.h | 3 +-
include/llvm/User.h | 46 +-
include/llvm/Value.h | 12 +-
lib/Analysis/AliasAnalysis.cpp | 10 +-
lib/Analysis/AliasSetTracker.cpp | 6 +-
lib/Analysis/Analysis.cpp | 4 +-
lib/Analysis/BasicAliasAnalysis.cpp | 170 +-
lib/Analysis/BranchProbabilityInfo.cpp | 134 +-
lib/Analysis/CMakeLists.txt | 5 +-
lib/Analysis/CaptureTracking.cpp | 4 +-
lib/Analysis/CodeMetrics.cpp | 10 +-
lib/Analysis/ConstantFolding.cpp | 265 +-
lib/Analysis/CostModel.cpp | 193 +
lib/Analysis/DependenceAnalysis.cpp | 3786 ++++++++++++++++++++
lib/Analysis/DominanceFrontier.cpp | 2 +
lib/Analysis/IPA/CallGraph.cpp | 13 +-
lib/Analysis/IPA/GlobalsModRef.cpp | 6 +-
lib/Analysis/IVUsers.cpp | 6 +-
lib/Analysis/InlineCost.cpp | 95 +-
lib/Analysis/InstructionSimplify.cpp | 89 +-
lib/Analysis/LazyValueInfo.cpp | 52 +-
lib/Analysis/Lint.cpp | 56 +-
lib/Analysis/Loads.cpp | 8 +-
lib/Analysis/LoopDependenceAnalysis.cpp | 362 --
lib/Analysis/LoopInfo.cpp | 11 +-
lib/Analysis/MemoryBuiltins.cpp | 184 +-
lib/Analysis/MemoryDependenceAnalysis.cpp | 30 +-
lib/Analysis/NoAliasAnalysis.cpp | 4 +-
lib/Analysis/PHITransAddr.cpp | 2 +
lib/Analysis/ProfileDataLoader.cpp | 155 +
lib/Analysis/ProfileDataLoaderPass.cpp | 188 +
lib/Analysis/ProfileEstimatorPass.cpp | 2 +-
lib/Analysis/ProfileInfo.cpp | 26 -
lib/Analysis/RegionInfo.cpp | 26 +-
lib/Analysis/RegionPass.cpp | 5 +-
lib/Analysis/ScalarEvolution.cpp | 116 +-
lib/Analysis/ScalarEvolutionExpander.cpp | 23 +-
lib/Analysis/Trace.cpp | 2 +
lib/Analysis/ValueTracking.cpp | 61 +-
lib/Archive/ArchiveInternals.h | 2 +-
lib/Archive/ArchiveReader.cpp | 4 +-
lib/AsmParser/LLLexer.cpp | 9 +-
lib/AsmParser/LLParser.cpp | 257 +-
lib/AsmParser/LLParser.h | 2 +-
lib/AsmParser/LLToken.h | 11 +-
lib/Bitcode/Reader/BitcodeReader.cpp | 159 +-
lib/Bitcode/Reader/BitcodeReader.h | 67 +-
lib/Bitcode/Writer/BitcodeWriter.cpp | 130 +-
lib/Bitcode/Writer/ValueEnumerator.h | 6 +-
lib/CodeGen/AggressiveAntiDepBreaker.cpp | 4 +-
lib/CodeGen/AllocationOrder.cpp | 5 +-
lib/CodeGen/Analysis.cpp | 18 +-
lib/CodeGen/AsmPrinter/ARMException.cpp | 2 +-
lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 171 +-
lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp | 4 +-
lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp | 234 +-
lib/CodeGen/AsmPrinter/DIE.cpp | 18 +-
lib/CodeGen/AsmPrinter/DIE.h | 8 -
lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp | 4 +-
lib/CodeGen/AsmPrinter/DwarfAccelTable.h | 4 +-
lib/CodeGen/AsmPrinter/DwarfCFIException.cpp | 2 +-
lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 67 +-
lib/CodeGen/AsmPrinter/DwarfCompileUnit.h | 7 +-
lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 203 +-
lib/CodeGen/AsmPrinter/DwarfDebug.h | 27 +-
lib/CodeGen/AsmPrinter/DwarfException.cpp | 4 +-
lib/CodeGen/AsmPrinter/DwarfException.h | 40 +-
lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp | 4 +-
lib/CodeGen/AsmPrinter/Win64Exception.cpp | 2 +-
lib/CodeGen/BranchFolding.cpp | 25 +-
lib/CodeGen/CMakeLists.txt | 3 +
lib/CodeGen/CalcSpillWeights.cpp | 6 +-
lib/CodeGen/CallingConvLower.cpp | 4 +-
lib/CodeGen/CodeGen.cpp | 2 +
lib/CodeGen/CodePlacementOpt.cpp | 2 +-
lib/CodeGen/CriticalAntiDepBreaker.cpp | 2 +-
lib/CodeGen/DeadMachineInstructionElim.cpp | 8 +-
lib/CodeGen/EarlyIfConversion.cpp | 10 +-
lib/CodeGen/ExecutionDepsFix.cpp | 11 +-
lib/CodeGen/ExpandPostRAPseudos.cpp | 4 +-
lib/CodeGen/GCStrategy.cpp | 14 +-
lib/CodeGen/IfConversion.cpp | 6 +-
lib/CodeGen/InlineSpiller.cpp | 6 +-
lib/CodeGen/IntrinsicLowering.cpp | 8 +-
lib/CodeGen/LLVMTargetMachine.cpp | 6 +-
lib/CodeGen/LiveDebugVariables.cpp | 3 +-
lib/CodeGen/LiveInterval.cpp | 97 +-
lib/CodeGen/LiveIntervalAnalysis.cpp | 831 ++---
lib/CodeGen/LiveIntervalUnion.h | 4 +-
lib/CodeGen/LiveRangeCalc.cpp | 6 +-
lib/CodeGen/LiveRangeEdit.cpp | 11 +-
lib/CodeGen/LiveRegMatrix.cpp | 4 +-
lib/CodeGen/LiveRegMatrix.h | 2 +-
lib/CodeGen/LiveStackAnalysis.cpp | 5 +-
lib/CodeGen/LiveVariables.cpp | 42 +-
lib/CodeGen/MachineBasicBlock.cpp | 90 +-
lib/CodeGen/MachineBlockPlacement.cpp | 6 +-
lib/CodeGen/MachineBranchProbabilityInfo.cpp | 20 +-
lib/CodeGen/MachineCSE.cpp | 70 +-
lib/CodeGen/MachineCopyPropagation.cpp | 13 +-
lib/CodeGen/MachineFunction.cpp | 49 +-
lib/CodeGen/MachineFunctionPrinterPass.cpp | 2 +-
lib/CodeGen/MachineInstr.cpp | 337 +-
lib/CodeGen/MachineInstrBundle.cpp | 62 +-
lib/CodeGen/MachineLICM.cpp | 2 +-
lib/CodeGen/MachineLoopInfo.cpp | 2 +
lib/CodeGen/MachineModuleInfo.cpp | 2 +-
lib/CodeGen/MachineModuleInfoImpls.cpp | 4 +-
lib/CodeGen/MachinePostDominators.cpp | 55 +
lib/CodeGen/MachineRegisterInfo.cpp | 18 +-
lib/CodeGen/MachineScheduler.cpp | 1458 +++++---
lib/CodeGen/MachineSink.cpp | 2 -
lib/CodeGen/MachineTraceMetrics.cpp | 74 +-
lib/CodeGen/MachineTraceMetrics.h | 13 +-
lib/CodeGen/MachineVerifier.cpp | 157 +-
lib/CodeGen/Passes.cpp | 17 +-
lib/CodeGen/PeepholeOptimizer.cpp | 5 +
lib/CodeGen/PostRASchedulerList.cpp | 9 +-
lib/CodeGen/ProcessImplicitDefs.cpp | 3 +-
lib/CodeGen/PrologEpilogInserter.cpp | 8 +-
lib/CodeGen/RegAllocBasic.cpp | 3 +-
lib/CodeGen/RegAllocFast.cpp | 73 +-
lib/CodeGen/RegAllocGreedy.cpp | 8 +-
lib/CodeGen/RegAllocPBQP.cpp | 17 +-
lib/CodeGen/RegisterClassInfo.cpp | 10 +-
lib/CodeGen/RegisterCoalescer.cpp | 1077 ++++--
lib/CodeGen/RegisterCoalescer.h | 7 +
lib/CodeGen/RegisterPressure.cpp | 35 +-
lib/CodeGen/RegisterScavenging.cpp | 7 +-
lib/CodeGen/ScheduleDAG.cpp | 2 +
lib/CodeGen/ScheduleDAGInstrs.cpp | 346 +-
lib/CodeGen/ScheduleDAGPrinter.cpp | 3 +-
lib/CodeGen/ScoreboardHazardRecognizer.cpp | 2 +
lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 1190 +++++-
lib/CodeGen/SelectionDAG/FastISel.cpp | 4 +-
lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp | 8 +-
lib/CodeGen/SelectionDAG/InstrEmitter.cpp | 55 +-
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 147 +-
lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp | 50 +-
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp | 43 +-
lib/CodeGen/SelectionDAG/LegalizeTypes.cpp | 2 +-
lib/CodeGen/SelectionDAG/LegalizeTypes.h | 3 +-
lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp | 48 +-
lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp | 73 +-
lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp | 27 +-
lib/CodeGen/SelectionDAG/SDNodeOrdering.h | 4 +-
lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp | 182 +-
lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp | 44 +-
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp | 18 +-
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h | 9 +-
lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp | 2 +-
lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 284 +-
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 372 +-
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h | 19 +-
lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp | 11 +-
lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 31 +-
lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp | 7 +-
lib/CodeGen/SelectionDAG/TargetLowering.cpp | 43 +-
.../SelectionDAG/TargetSelectionDAGInfo.cpp | 2 +-
lib/CodeGen/ShrinkWrapping.cpp | 22 +-
lib/CodeGen/SjLjEHPrepare.cpp | 86 +-
lib/CodeGen/SlotIndexes.cpp | 4 +
lib/CodeGen/SplitKit.cpp | 2 +
lib/CodeGen/StackColoring.cpp | 783 ++++
lib/CodeGen/StackProtector.cpp | 69 +-
lib/CodeGen/StackSlotColoring.cpp | 6 +-
lib/CodeGen/StrongPHIElimination.cpp | 11 +-
lib/CodeGen/TailDuplication.cpp | 3 +-
lib/CodeGen/TargetInstrInfoImpl.cpp | 120 +-
lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 12 +-
lib/CodeGen/TargetSchedule.cpp | 306 ++
lib/CodeGen/TwoAddressInstructionPass.cpp | 499 +--
lib/CodeGen/VirtRegMap.cpp | 16 +-
lib/CodeGen/VirtRegMap.h | 4 +-
lib/DebugInfo/CMakeLists.txt | 1 +
lib/DebugInfo/DIContext.cpp | 7 +-
lib/DebugInfo/DWARFCompileUnit.cpp | 48 +-
lib/DebugInfo/DWARFCompileUnit.h | 16 +-
lib/DebugInfo/DWARFContext.cpp | 220 +-
lib/DebugInfo/DWARFContext.h | 40 +-
lib/DebugInfo/DWARFDebugAranges.cpp | 1 -
lib/DebugInfo/DWARFDebugInfoEntry.cpp | 184 +-
lib/DebugInfo/DWARFDebugInfoEntry.h | 54 +-
lib/DebugInfo/DWARFDebugLine.cpp | 27 +
lib/DebugInfo/DWARFDebugLine.h | 8 +
lib/DebugInfo/DWARFDebugRangeList.cpp | 67 +
lib/DebugInfo/DWARFDebugRangeList.h | 78 +
lib/DebugInfo/DWARFFormValue.cpp | 76 +-
lib/DebugInfo/DWARFFormValue.h | 2 +-
lib/ExecutionEngine/ExecutionEngine.cpp | 43 +-
lib/ExecutionEngine/ExecutionEngineBindings.cpp | 2 +-
lib/ExecutionEngine/IntelJITEvents/CMakeLists.txt | 9 +-
.../IntelJITEvents/IntelJITEventListener.cpp | 32 +-
.../IntelJITEvents/IntelJITEventsWrapper.h | 102 +
lib/ExecutionEngine/IntelJITEvents/Makefile | 5 +-
.../IntelJITEvents/ittnotify_config.h | 454 +++
.../IntelJITEvents/ittnotify_types.h | 70 +
lib/ExecutionEngine/IntelJITEvents/jitprofiling.c | 481 +++
lib/ExecutionEngine/IntelJITEvents/jitprofiling.h | 259 ++
.../Interpreter/ExternalFunctions.cpp | 8 +-
lib/ExecutionEngine/Interpreter/Interpreter.cpp | 2 +-
lib/ExecutionEngine/Interpreter/Interpreter.h | 4 +-
lib/ExecutionEngine/JIT/JIT.cpp | 14 +-
lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp | 4 +-
lib/ExecutionEngine/JIT/JITDwarfEmitter.h | 4 +-
lib/ExecutionEngine/JIT/JITEmitter.cpp | 36 +-
lib/ExecutionEngine/MCJIT/CMakeLists.txt | 1 -
lib/ExecutionEngine/MCJIT/MCJIT.cpp | 113 +-
lib/ExecutionEngine/MCJIT/MCJIT.h | 26 +-
lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp | 14 -
lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h | 50 -
lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp | 8 +-
lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h | 6 +-
lib/ExecutionEngine/RuntimeDyld/ObjectImage.h | 59 -
.../RuntimeDyld/ObjectImageCommon.h | 76 +
lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp | 145 +-
lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp | 555 ++-
lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h | 56 +-
lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h | 96 +-
.../RuntimeDyld/RuntimeDyldMachO.cpp | 28 +-
lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h | 6 +-
lib/ExecutionEngine/TargetSelect.cpp | 9 +-
lib/MC/ELFObjectWriter.cpp | 28 +-
lib/MC/MCAsmBackend.cpp | 7 +-
lib/MC/MCAsmInfo.cpp | 2 +-
lib/MC/MCAsmInfoCOFF.cpp | 4 +-
lib/MC/MCAsmInfoDarwin.cpp | 1 +
lib/MC/MCAsmStreamer.cpp | 27 +-
lib/MC/MCAssembler.cpp | 15 +-
lib/MC/MCContext.cpp | 6 +
lib/MC/MCDisassembler/Disassembler.cpp | 14 +
lib/MC/MCDisassembler/EDDisassembler.cpp | 3 +-
lib/MC/MCDwarf.cpp | 2 +
lib/MC/MCELFObjectTargetWriter.cpp | 8 +
lib/MC/MCELFStreamer.cpp | 52 +-
lib/MC/MCExpr.cpp | 11 +-
lib/MC/MCInst.cpp | 4 +
lib/MC/MCInstPrinter.cpp | 14 +
lib/MC/MCLabel.cpp | 2 +
lib/MC/MCMachOStreamer.cpp | 59 +-
lib/MC/MCObjectFileInfo.cpp | 33 +-
lib/MC/MCObjectStreamer.cpp | 45 +-
lib/MC/MCParser/AsmLexer.cpp | 13 +-
lib/MC/MCParser/AsmParser.cpp | 578 ++-
lib/MC/MCParser/ELFAsmParser.cpp | 2 +-
lib/MC/MCParser/MCAsmLexer.cpp | 3 +-
lib/MC/MCParser/MCAsmParser.cpp | 2 +
lib/MC/MCParser/MCTargetAsmParser.cpp | 2 +-
lib/MC/MCRegisterInfo.cpp | 3 +
lib/MC/MCStreamer.cpp | 4 +
lib/MC/MCSubtargetInfo.cpp | 57 +-
lib/MC/MCSymbol.cpp | 4 +-
lib/MC/MCValue.cpp | 2 +
lib/MC/MachObjectWriter.cpp | 53 +-
lib/MC/SubtargetFeature.cpp | 35 +-
lib/MC/WinCOFFStreamer.cpp | 42 -
lib/Object/COFFObjectFile.cpp | 14 +-
lib/Object/MachOObjectFile.cpp | 21 +-
lib/Support/APFloat.cpp | 230 +-
lib/Support/Atomic.cpp | 14 +-
lib/Support/CMakeLists.txt | 6 -
lib/Support/CommandLine.cpp | 26 +-
lib/Support/DAGDeltaAlgorithm.cpp | 10 +-
lib/Support/DataExtractor.cpp | 6 +-
lib/Support/DataStream.cpp | 2 +-
lib/Support/DynamicLibrary.cpp | 2 +-
lib/Support/Errno.cpp | 15 +-
lib/Support/FoldingSet.cpp | 18 +
lib/Support/Host.cpp | 4 +
lib/Support/LockFileManager.cpp | 2 +-
lib/Support/Makefile | 3 -
lib/Support/Memory.cpp | 56 -
lib/Support/MemoryBuffer.cpp | 58 +-
lib/Support/SmallVector.cpp | 6 +-
lib/Support/StreamableMemoryObject.cpp | 24 +-
lib/Support/StringMap.cpp | 9 +-
lib/Support/StringRef.cpp | 4 +-
lib/Support/Triple.cpp | 59 +-
lib/Support/Unix/Memory.inc | 206 +-
lib/Support/Unix/Path.inc | 17 +-
lib/Support/Unix/Signals.inc | 38 +-
lib/Support/Windows/Memory.inc | 165 +-
lib/Support/Windows/PathV2.inc | 2 +-
lib/Support/YAMLParser.cpp | 7 +
lib/Support/raw_ostream.cpp | 12 +-
lib/Support/regexec.c | 2 +-
lib/Support/system_error.cpp | 10 +-
lib/TableGen/CMakeLists.txt | 5 -
lib/TableGen/Error.cpp | 35 +-
lib/TableGen/Main.cpp | 138 +-
lib/TableGen/Makefile | 4 -
lib/TableGen/Record.cpp | 615 ++--
lib/TableGen/TGParser.cpp | 94 +-
lib/TableGen/TGParser.h | 23 +-
lib/TableGen/TableGenAction.cpp | 15 -
lib/Target/ARM/ARM.h | 1 +
lib/Target/ARM/ARM.td | 31 +-
lib/Target/ARM/ARMAsmPrinter.cpp | 98 +-
lib/Target/ARM/ARMAsmPrinter.h | 40 +-
lib/Target/ARM/ARMBaseInstrInfo.cpp | 943 ++++-
lib/Target/ARM/ARMBaseInstrInfo.h | 16 +-
lib/Target/ARM/ARMBaseRegisterInfo.cpp | 173 +-
lib/Target/ARM/ARMBaseRegisterInfo.h | 13 +-
lib/Target/ARM/ARMCallingConv.td | 2 +
lib/Target/ARM/ARMCodeEmitter.cpp | 8 +-
lib/Target/ARM/ARMConstantIslandPass.cpp | 9 +-
lib/Target/ARM/ARMConstantPoolValue.h | 5 -
lib/Target/ARM/ARMELFWriterInfo.cpp | 78 -
lib/Target/ARM/ARMELFWriterInfo.h | 59 -
lib/Target/ARM/ARMExpandPseudoInsts.cpp | 16 +-
lib/Target/ARM/ARMFastISel.cpp | 233 +-
lib/Target/ARM/ARMFrameLowering.cpp | 41 +-
lib/Target/ARM/ARMHazardRecognizer.cpp | 2 +-
lib/Target/ARM/ARMISelDAGToDAG.cpp | 174 +-
lib/Target/ARM/ARMISelLowering.cpp | 679 +++-
lib/Target/ARM/ARMISelLowering.h | 19 +-
lib/Target/ARM/ARMInstrFormats.td | 21 +
lib/Target/ARM/ARMInstrInfo.cpp | 62 +
lib/Target/ARM/ARMInstrInfo.td | 212 +-
lib/Target/ARM/ARMInstrNEON.td | 125 +-
lib/Target/ARM/ARMInstrThumb.td | 6 +-
lib/Target/ARM/ARMInstrThumb2.td | 138 +-
lib/Target/ARM/ARMInstrVFP.td | 12 +-
lib/Target/ARM/ARMJITInfo.cpp | 2 +-
lib/Target/ARM/ARMLoadStoreOptimizer.cpp | 6 +-
lib/Target/ARM/ARMMachineFunctionInfo.h | 12 +-
lib/Target/ARM/ARMRegisterInfo.td | 23 +-
lib/Target/ARM/ARMSchedule.td | 2 +
lib/Target/ARM/ARMScheduleA9.td | 597 ++-
lib/Target/ARM/ARMScheduleSwift.td | 1085 ++++++
lib/Target/ARM/ARMSelectionDAGInfo.cpp | 2 +-
lib/Target/ARM/ARMSubtarget.cpp | 9 +-
lib/Target/ARM/ARMSubtarget.h | 14 +-
lib/Target/ARM/ARMTargetMachine.cpp | 19 +-
lib/Target/ARM/ARMTargetMachine.h | 35 +-
lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 280 +-
lib/Target/ARM/CMakeLists.txt | 1 -
lib/Target/ARM/Disassembler/ARMDisassembler.cpp | 92 +-
lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp | 584 +--
lib/Target/ARM/InstPrinter/ARMInstPrinter.h | 3 +-
lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp | 15 +-
lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp | 7 +
lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp | 1 -
lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp | 10 +-
lib/Target/ARM/MCTargetDesc/ARMMCExpr.h | 5 +-
lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp | 8 +
lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h | 2 +-
.../ARM/MCTargetDesc/ARMMachObjectWriter.cpp | 51 +-
lib/Target/ARM/MLxExpansionPass.cpp | 74 +-
lib/Target/CMakeLists.txt | 3 +-
lib/Target/CellSPU/SPUAsmPrinter.cpp | 6 +-
lib/Target/CellSPU/SPUFrameLowering.cpp | 2 +-
lib/Target/CellSPU/SPUISelDAGToDAG.cpp | 43 +-
lib/Target/CellSPU/SPUSubtarget.h | 4 +-
lib/Target/CellSPU/SPUTargetMachine.cpp | 5 +-
lib/Target/CellSPU/SPUTargetMachine.h | 17 +-
lib/Target/CppBackend/CPPBackend.cpp | 35 +-
lib/Target/CppBackend/CPPTargetMachine.h | 4 +-
lib/Target/Hexagon/CMakeLists.txt | 1 +
lib/Target/Hexagon/HexagonAsmPrinter.cpp | 2 +-
lib/Target/Hexagon/HexagonCallingConvLower.cpp | 2 +-
lib/Target/Hexagon/HexagonISelLowering.cpp | 2 +
lib/Target/Hexagon/HexagonInstrFormats.td | 10 +
lib/Target/Hexagon/HexagonInstrInfo.cpp | 28 +-
lib/Target/Hexagon/HexagonInstrInfo.td | 312 +-
lib/Target/Hexagon/HexagonMachineScheduler.cpp | 681 ++++
lib/Target/Hexagon/HexagonMachineScheduler.h | 244 ++
lib/Target/Hexagon/HexagonNewValueJump.cpp | 2 +-
lib/Target/Hexagon/HexagonPeephole.cpp | 35 +
lib/Target/Hexagon/HexagonRegisterInfo.cpp | 52 +
lib/Target/Hexagon/HexagonRegisterInfo.h | 5 +
lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp | 2 +-
lib/Target/Hexagon/HexagonSchedule.td | 1 +
lib/Target/Hexagon/HexagonScheduleV4.td | 1 +
lib/Target/Hexagon/HexagonSubtarget.cpp | 33 +-
lib/Target/Hexagon/HexagonTargetMachine.cpp | 28 +-
lib/Target/Hexagon/HexagonTargetMachine.h | 17 +-
lib/Target/Hexagon/HexagonTargetObjectFile.cpp | 4 +-
lib/Target/Hexagon/HexagonVLIWPacketizer.cpp | 4 +-
.../Hexagon/HexagonVarargsCallingConvention.h | 8 +-
.../Hexagon/MCTargetDesc/HexagonMCAsmInfo.cpp | 2 +-
lib/Target/MBlaze/AsmParser/MBlazeAsmParser.cpp | 29 +-
lib/Target/MBlaze/CMakeLists.txt | 1 -
lib/Target/MBlaze/MBlazeAsmPrinter.cpp | 2 +-
lib/Target/MBlaze/MBlazeELFWriterInfo.cpp | 107 -
lib/Target/MBlaze/MBlazeELFWriterInfo.h | 59 -
lib/Target/MBlaze/MBlazeFrameLowering.cpp | 2 +-
lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp | 5 +-
lib/Target/MBlaze/MBlazeRegisterInfo.cpp | 2 +-
lib/Target/MBlaze/MBlazeTargetMachine.cpp | 7 +-
lib/Target/MBlaze/MBlazeTargetMachine.h | 20 +-
lib/Target/MBlaze/MBlazeTargetObjectFile.cpp | 4 +-
.../MBlaze/MCTargetDesc/MBlazeAsmBackend.cpp | 3 +-
.../MBlaze/MCTargetDesc/MBlazeMCCodeEmitter.cpp | 4 +-
.../MBlaze/MCTargetDesc/MBlazeMCTargetDesc.h | 3 +-
lib/Target/MSP430/MSP430FrameLowering.cpp | 16 +-
lib/Target/MSP430/MSP430FrameLowering.h | 1 +
lib/Target/MSP430/MSP430ISelDAGToDAG.cpp | 4 +-
lib/Target/MSP430/MSP430ISelLowering.cpp | 4 +-
lib/Target/MSP430/MSP430ISelLowering.h | 2 +-
lib/Target/MSP430/MSP430RegisterInfo.cpp | 14 -
lib/Target/MSP430/MSP430RegisterInfo.h | 2 -
lib/Target/MSP430/MSP430TargetMachine.cpp | 6 +-
lib/Target/MSP430/MSP430TargetMachine.h | 16 +-
lib/Target/Mangler.cpp | 9 +-
lib/Target/Mips/AsmParser/CMakeLists.txt | 1 +
lib/Target/Mips/AsmParser/MipsAsmParser.cpp | 1289 ++++++-
lib/Target/Mips/CMakeLists.txt | 2 +
lib/Target/Mips/Disassembler/MipsDisassembler.cpp | 29 +
lib/Target/Mips/MCTargetDesc/CMakeLists.txt | 1 +
lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp | 16 +-
lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h | 6 +-
.../Mips/MCTargetDesc/MipsDirectObjLower.cpp | 81 +
lib/Target/Mips/MCTargetDesc/MipsDirectObjLower.h | 28 +
.../Mips/MCTargetDesc/MipsELFObjectWriter.cpp | 10 +-
lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp | 60 +-
lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h | 12 +-
lib/Target/Mips/Makefile | 4 +-
lib/Target/Mips/Mips.td | 19 +-
lib/Target/Mips/Mips16FrameLowering.cpp | 56 +-
lib/Target/Mips/Mips16FrameLowering.h | 5 +
lib/Target/Mips/Mips16InstrInfo.cpp | 93 +-
lib/Target/Mips/Mips16InstrInfo.h | 4 +
lib/Target/Mips/Mips16InstrInfo.td | 1225 ++++++-
lib/Target/Mips/Mips16RegisterInfo.cpp | 122 +-
lib/Target/Mips/Mips16RegisterInfo.h | 5 +-
lib/Target/Mips/Mips64InstrInfo.td | 95 +-
lib/Target/Mips/MipsAnalyzeImmediate.cpp | 2 +-
lib/Target/Mips/MipsAsmPrinter.cpp | 42 +-
lib/Target/Mips/MipsAsmPrinter.h | 8 +
lib/Target/Mips/MipsCallingConv.td | 12 -
lib/Target/Mips/MipsCodeEmitter.cpp | 46 +-
lib/Target/Mips/MipsDSPInstrFormats.td | 309 ++
lib/Target/Mips/MipsDSPInstrInfo.td | 1319 +++++++
lib/Target/Mips/MipsDelaySlotFiller.cpp | 11 +-
lib/Target/Mips/MipsFrameLowering.cpp | 36 +-
lib/Target/Mips/MipsFrameLowering.h | 3 +
lib/Target/Mips/MipsISelDAGToDAG.cpp | 210 +-
lib/Target/Mips/MipsISelLowering.cpp | 1204 ++++---
lib/Target/Mips/MipsISelLowering.h | 164 +
lib/Target/Mips/MipsInstrFPU.td | 41 +-
lib/Target/Mips/MipsInstrFormats.td | 29 +
lib/Target/Mips/MipsInstrInfo.cpp | 55 +-
lib/Target/Mips/MipsInstrInfo.h | 12 -
lib/Target/Mips/MipsInstrInfo.td | 208 +-
lib/Target/Mips/MipsLongBranch.cpp | 232 +-
lib/Target/Mips/MipsMCInstLower.cpp | 29 -
lib/Target/Mips/MipsMCInstLower.h | 3 +-
lib/Target/Mips/MipsMachineFunction.cpp | 13 +
lib/Target/Mips/MipsMachineFunction.h | 50 +-
lib/Target/Mips/MipsRegisterInfo.cpp | 50 +-
lib/Target/Mips/MipsRegisterInfo.h | 4 +-
lib/Target/Mips/MipsRegisterInfo.td | 27 +-
lib/Target/Mips/MipsSEFrameLowering.cpp | 16 +-
lib/Target/Mips/MipsSEInstrInfo.cpp | 51 +-
lib/Target/Mips/MipsSEInstrInfo.h | 8 +-
lib/Target/Mips/MipsSERegisterInfo.cpp | 45 +-
lib/Target/Mips/MipsSERegisterInfo.h | 9 +-
lib/Target/Mips/MipsSubtarget.cpp | 9 +-
lib/Target/Mips/MipsSubtarget.h | 11 +-
lib/Target/Mips/MipsTargetMachine.cpp | 7 +-
lib/Target/Mips/MipsTargetMachine.h | 18 +-
lib/Target/Mips/MipsTargetObjectFile.cpp | 10 +-
lib/Target/NVPTX/NVPTX.td | 34 +-
lib/Target/NVPTX/NVPTXAllocaHoisting.h | 4 +-
lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 105 +-
lib/Target/NVPTX/NVPTXISelLowering.cpp | 68 +-
lib/Target/NVPTX/NVPTXISelLowering.h | 3 +
lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp | 4 +-
lib/Target/NVPTX/NVPTXLowerAggrCopies.h | 4 +-
lib/Target/NVPTX/NVPTXSubtarget.cpp | 20 +-
lib/Target/NVPTX/NVPTXSubtarget.h | 12 +-
lib/Target/NVPTX/NVPTXTargetMachine.cpp | 7 +-
lib/Target/NVPTX/NVPTXTargetMachine.h | 16 +-
lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp | 8 +-
lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp | 15 +-
.../PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp | 92 +-
lib/Target/PowerPC/MCTargetDesc/PPCFixupKinds.h | 10 +
lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp | 4 +-
.../PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp | 56 +-
.../PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp | 2 +-
lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h | 2 +-
lib/Target/PowerPC/PPC.td | 10 +
lib/Target/PowerPC/PPCAsmPrinter.cpp | 101 +-
lib/Target/PowerPC/PPCCallingConv.td | 7 +
lib/Target/PowerPC/PPCFrameLowering.cpp | 266 +-
lib/Target/PowerPC/PPCFrameLowering.h | 71 +-
lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 156 +-
lib/Target/PowerPC/PPCISelLowering.cpp | 1217 ++++++-
lib/Target/PowerPC/PPCISelLowering.h | 60 +-
lib/Target/PowerPC/PPCInstr64Bit.td | 115 +-
lib/Target/PowerPC/PPCInstrAltivec.td | 32 +
lib/Target/PowerPC/PPCInstrFormats.td | 41 +-
lib/Target/PowerPC/PPCInstrInfo.cpp | 24 +-
lib/Target/PowerPC/PPCInstrInfo.td | 200 +-
lib/Target/PowerPC/PPCRegisterInfo.cpp | 36 +-
lib/Target/PowerPC/PPCRegisterInfo.h | 5 +-
lib/Target/PowerPC/PPCSchedule.td | 88 +-
lib/Target/PowerPC/PPCSchedule440.td | 60 +-
lib/Target/PowerPC/PPCScheduleA2.td | 81 +-
lib/Target/PowerPC/PPCScheduleE500mc.td | 265 ++
lib/Target/PowerPC/PPCScheduleE5500.td | 309 ++
lib/Target/PowerPC/PPCScheduleG3.td | 7 +-
lib/Target/PowerPC/PPCScheduleG4.td | 7 +-
lib/Target/PowerPC/PPCScheduleG4Plus.td | 8 +-
lib/Target/PowerPC/PPCScheduleG5.td | 10 +-
lib/Target/PowerPC/PPCSubtarget.cpp | 15 +-
lib/Target/PowerPC/PPCSubtarget.h | 57 +-
lib/Target/PowerPC/PPCTargetMachine.cpp | 5 +-
lib/Target/PowerPC/PPCTargetMachine.h | 15 +-
lib/Target/README.txt | 7 +-
lib/Target/Sparc/SparcFrameLowering.cpp | 2 +-
lib/Target/Sparc/SparcISelLowering.cpp | 2 +-
lib/Target/Sparc/SparcInstrInfo.td | 2 +-
lib/Target/Sparc/SparcTargetMachine.cpp | 4 +-
lib/Target/Sparc/SparcTargetMachine.h | 15 +-
lib/Target/Target.cpp | 19 +-
lib/Target/TargetData.cpp | 663 ----
lib/Target/TargetELFWriterInfo.cpp | 25 -
lib/Target/TargetLibraryInfo.cpp | 75 +-
lib/Target/TargetLoweringObjectFile.cpp | 4 +-
lib/Target/TargetMachineC.cpp | 12 +-
lib/Target/TargetRegisterInfo.cpp | 6 +-
lib/Target/TargetTransformImpl.cpp | 353 ++
lib/Target/X86/AsmParser/X86AsmLexer.cpp | 43 +-
lib/Target/X86/AsmParser/X86AsmParser.cpp | 445 ++-
lib/Target/X86/CMakeLists.txt | 1 -
lib/Target/X86/Disassembler/X86Disassembler.cpp | 12 +-
lib/Target/X86/Disassembler/X86Disassembler.h | 2 +-
.../X86/Disassembler/X86DisassemblerDecoder.c | 16 +-
.../X86/Disassembler/X86DisassemblerDecoder.h | 12 +-
.../Disassembler/X86DisassemblerDecoderCommon.h | 5 +
lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp | 66 +-
lib/Target/X86/InstPrinter/X86ATTInstPrinter.h | 3 +-
lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp | 48 +-
lib/Target/X86/InstPrinter/X86IntelInstPrinter.h | 5 +-
lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp | 70 +-
lib/Target/X86/MCTargetDesc/X86BaseInfo.h | 16 +-
lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp | 25 +-
lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp | 5 +
lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | 37 +-
lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp | 115 +-
lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h | 11 +-
.../X86/MCTargetDesc/X86MachObjectWriter.cpp | 48 +-
lib/Target/X86/README-SSE.txt | 12 +
lib/Target/X86/X86.td | 14 +-
lib/Target/X86/X86AsmPrinter.cpp | 113 +-
lib/Target/X86/X86AsmPrinter.h | 37 +-
lib/Target/X86/X86COFFMachineModuleInfo.h | 2 +-
lib/Target/X86/X86CallingConv.td | 59 +-
lib/Target/X86/X86CodeEmitter.cpp | 61 +-
lib/Target/X86/X86ELFWriterInfo.cpp | 147 -
lib/Target/X86/X86ELFWriterInfo.h | 59 -
lib/Target/X86/X86FastISel.cpp | 56 +-
lib/Target/X86/X86FloatingPoint.cpp | 6 +-
lib/Target/X86/X86FrameLowering.cpp | 13 +-
lib/Target/X86/X86ISelDAGToDAG.cpp | 609 ++--
lib/Target/X86/X86ISelLowering.cpp | 3120 +++++++++++-----
lib/Target/X86/X86ISelLowering.h | 154 +-
lib/Target/X86/X86InstrCompiler.td | 475 ++-
lib/Target/X86/X86InstrControl.td | 7 +-
lib/Target/X86/X86InstrFMA.td | 432 ++-
lib/Target/X86/X86InstrFormats.td | 91 +-
lib/Target/X86/X86InstrFragmentsSIMD.td | 31 +-
lib/Target/X86/X86InstrInfo.cpp | 536 +--
lib/Target/X86/X86InstrInfo.h | 3 +
lib/Target/X86/X86InstrInfo.td | 83 +-
lib/Target/X86/X86InstrMMX.td | 75 +-
lib/Target/X86/X86InstrSSE.td | 1488 +++++---
lib/Target/X86/X86InstrShiftRotate.td | 78 +
lib/Target/X86/X86InstrTSX.td | 32 +
lib/Target/X86/X86InstrXOP.td | 17 +-
lib/Target/X86/X86JITInfo.cpp | 17 +-
lib/Target/X86/X86MCInstLower.cpp | 54 +-
lib/Target/X86/X86MCInstLower.h | 52 -
lib/Target/X86/X86RegisterInfo.cpp | 66 +-
lib/Target/X86/X86RegisterInfo.h | 9 +-
lib/Target/X86/X86RegisterInfo.td | 496 +--
lib/Target/X86/X86SelectionDAGInfo.cpp | 2 +-
lib/Target/X86/X86Subtarget.cpp | 27 +-
lib/Target/X86/X86Subtarget.h | 31 +-
lib/Target/X86/X86TargetMachine.cpp | 19 +-
lib/Target/X86/X86TargetMachine.h | 32 +-
lib/Target/X86/X86VZeroUpper.cpp | 12 +-
lib/Target/XCore/XCoreAsmPrinter.cpp | 4 +-
lib/Target/XCore/XCoreFrameLowering.cpp | 13 +-
lib/Target/XCore/XCoreISelLowering.cpp | 16 +-
lib/Target/XCore/XCoreInstrInfo.td | 4 +-
lib/Target/XCore/XCoreRegisterInfo.cpp | 2 +-
lib/Target/XCore/XCoreTargetMachine.cpp | 4 +-
lib/Target/XCore/XCoreTargetMachine.h | 15 +-
lib/Transforms/IPO/ArgumentPromotion.cpp | 64 +-
lib/Transforms/IPO/BarrierNoopPass.cpp | 47 +
lib/Transforms/IPO/CMakeLists.txt | 1 +
lib/Transforms/IPO/ConstantMerge.cpp | 8 +-
lib/Transforms/IPO/DeadArgumentElimination.cpp | 107 +-
lib/Transforms/IPO/ExtractGV.cpp | 63 +-
lib/Transforms/IPO/FunctionAttrs.cpp | 34 +-
lib/Transforms/IPO/GlobalOpt.cpp | 93 +-
lib/Transforms/IPO/IPO.cpp | 7 +-
lib/Transforms/IPO/InlineAlways.cpp | 6 +-
lib/Transforms/IPO/InlineSimple.cpp | 4 +-
lib/Transforms/IPO/Inliner.cpp | 28 +-
lib/Transforms/IPO/Internalize.cpp | 38 +-
lib/Transforms/IPO/MergeFunctions.cpp | 26 +-
lib/Transforms/IPO/PassManagerBuilder.cpp | 56 +-
lib/Transforms/IPO/PruneEH.cpp | 10 +-
lib/Transforms/InstCombine/InstCombine.h | 14 +-
lib/Transforms/InstCombine/InstCombineAddSub.cpp | 2 +-
lib/Transforms/InstCombine/InstCombineCalls.cpp | 172 +-
lib/Transforms/InstCombine/InstCombineCasts.cpp | 25 +-
lib/Transforms/InstCombine/InstCombineCompares.cpp | 70 +-
.../InstCombine/InstCombineLoadStoreAlloca.cpp | 201 +-
.../InstCombine/InstCombineMulDivRem.cpp | 17 +-
lib/Transforms/InstCombine/InstCombinePHI.cpp | 2 +-
lib/Transforms/InstCombine/InstCombineSelect.cpp | 30 +-
lib/Transforms/InstCombine/InstCombineShifts.cpp | 2 +-
.../InstCombine/InstCombineSimplifyDemanded.cpp | 2 +-
.../InstCombine/InstCombineVectorOps.cpp | 7 +-
lib/Transforms/InstCombine/InstCombineWorklist.h | 4 +-
.../InstCombine/InstructionCombining.cpp | 401 ++-
.../Instrumentation/AddressSanitizer.cpp | 437 ++-
lib/Transforms/Instrumentation/BlackList.cpp | 105 +
lib/Transforms/Instrumentation/BlackList.h | 57 +
lib/Transforms/Instrumentation/BoundsChecking.cpp | 16 +-
lib/Transforms/Instrumentation/CMakeLists.txt | 2 +-
.../Instrumentation/FunctionBlackList.cpp | 79 -
lib/Transforms/Instrumentation/FunctionBlackList.h | 37 -
lib/Transforms/Instrumentation/GCOVProfiling.cpp | 73 +-
.../Instrumentation/MaximumSpanningTree.h | 53 +-
lib/Transforms/Instrumentation/ThreadSanitizer.cpp | 137 +-
lib/Transforms/Scalar/CMakeLists.txt | 1 +
lib/Transforms/Scalar/CodeGenPrepare.cpp | 80 +-
lib/Transforms/Scalar/ConstantProp.cpp | 4 +-
.../Scalar/CorrelatedValuePropagation.cpp | 5 +
lib/Transforms/Scalar/DCE.cpp | 17 +-
lib/Transforms/Scalar/DeadStoreElimination.cpp | 203 +-
lib/Transforms/Scalar/EarlyCSE.cpp | 120 +-
lib/Transforms/Scalar/GVN.cpp | 99 +-
lib/Transforms/Scalar/GlobalMerge.cpp | 10 +-
lib/Transforms/Scalar/IndVarSimplify.cpp | 42 +-
lib/Transforms/Scalar/JumpThreading.cpp | 8 +-
lib/Transforms/Scalar/LICM.cpp | 45 +-
lib/Transforms/Scalar/LoopIdiomRecognize.cpp | 37 +-
lib/Transforms/Scalar/LoopInstSimplify.cpp | 6 +-
lib/Transforms/Scalar/LoopRotation.cpp | 65 +-
lib/Transforms/Scalar/LoopStrengthReduce.cpp | 58 +-
lib/Transforms/Scalar/LoopUnrollPass.cpp | 9 +-
lib/Transforms/Scalar/LoopUnswitch.cpp | 13 +-
lib/Transforms/Scalar/MemCpyOptimizer.cpp | 72 +-
lib/Transforms/Scalar/ObjCARC.cpp | 150 +-
lib/Transforms/Scalar/Reassociate.cpp | 105 +-
lib/Transforms/Scalar/SCCP.cpp | 10 +-
lib/Transforms/Scalar/SROA.cpp | 3697 +++++++++++++++++++
lib/Transforms/Scalar/Scalar.cpp | 3 +-
lib/Transforms/Scalar/ScalarReplAggregates.cpp | 198 +-
lib/Transforms/Scalar/SimplifyCFGPass.cpp | 62 +-
lib/Transforms/Scalar/SimplifyLibCalls.cpp | 980 +----
lib/Transforms/Utils/AddrModeMatcher.cpp | 6 +-
lib/Transforms/Utils/BasicBlockUtils.cpp | 45 +-
lib/Transforms/Utils/BuildLibCalls.cpp | 154 +-
lib/Transforms/Utils/BypassSlowDivision.cpp | 262 ++
lib/Transforms/Utils/CMakeLists.txt | 4 +
lib/Transforms/Utils/CloneFunction.cpp | 14 +-
lib/Transforms/Utils/CodeExtractor.cpp | 2 +-
lib/Transforms/Utils/InlineFunction.cpp | 4 +-
lib/Transforms/Utils/IntegerDivision.cpp | 420 +++
lib/Transforms/Utils/LCSSA.cpp | 15 +-
lib/Transforms/Utils/Local.cpp | 82 +-
lib/Transforms/Utils/LoopSimplify.cpp | 7 +
lib/Transforms/Utils/MetaRenamer.cpp | 132 +
lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 18 +-
lib/Transforms/Utils/SSAUpdater.cpp | 2 +-
lib/Transforms/Utils/SimplifyCFG.cpp | 1507 ++++++--
lib/Transforms/Utils/SimplifyIndVar.cpp | 6 +-
lib/Transforms/Utils/SimplifyInstructions.cpp | 6 +-
lib/Transforms/Utils/SimplifyLibCalls.cpp | 1149 ++++++
lib/Transforms/Utils/Utils.cpp | 1 +
lib/Transforms/Utils/ValueMapper.cpp | 2 +-
lib/Transforms/Vectorize/BBVectorize.cpp | 1012 ++++--
lib/Transforms/Vectorize/CMakeLists.txt | 1 +
lib/Transforms/Vectorize/LoopVectorize.cpp | 1941 ++++++++++
lib/Transforms/Vectorize/Vectorize.cpp | 8 +-
lib/VMCore/AsmWriter.cpp | 129 +-
lib/VMCore/Attributes.cpp | 518 ++-
lib/VMCore/AttributesImpl.h | 71 +
lib/VMCore/AutoUpgrade.cpp | 3 +-
lib/VMCore/CMakeLists.txt | 6 +-
lib/VMCore/ConstantFold.cpp | 28 +-
lib/VMCore/Constants.cpp | 27 +
lib/VMCore/ConstantsContext.h | 35 +-
lib/VMCore/Core.cpp | 62 +-
lib/VMCore/DIBuilder.cpp | 40 +-
lib/VMCore/DataLayout.cpp | 749 ++++
lib/VMCore/DebugInfo.cpp | 10 +
lib/VMCore/Dominators.cpp | 10 +
lib/VMCore/Function.cpp | 21 +-
lib/VMCore/GCOV.cpp | 30 +-
lib/VMCore/IRBuilder.cpp | 6 +-
lib/VMCore/InlineAsm.cpp | 13 +-
lib/VMCore/Instructions.cpp | 63 +-
lib/VMCore/LLVMContext.cpp | 5 +
lib/VMCore/LLVMContextImpl.cpp | 18 +-
lib/VMCore/LLVMContextImpl.h | 9 +-
lib/VMCore/Makefile | 1 -
lib/VMCore/PassManager.cpp | 2 +-
lib/VMCore/TargetTransformInfo.cpp | 31 +
lib/VMCore/Type.cpp | 41 +-
lib/VMCore/User.cpp | 9 +
lib/VMCore/Value.cpp | 2 +-
lib/VMCore/ValueTypes.cpp | 30 +-
lib/VMCore/Verifier.cpp | 181 +-
projects/CMakeLists.txt | 7 +
projects/sample/Makefile.llvm.rules | 4 +-
projects/sample/autoconf/configure.ac | 4 +-
projects/sample/configure | 4 +-
runtime/libprofile/CMakeLists.txt | 3 +-
runtime/libprofile/CommonProfiling.c | 22 +
runtime/libprofile/Makefile | 9 +-
runtime/libprofile/Profiling.h | 2 +-
test/Analysis/BasicAA/noalias-geps.ll | 54 +
test/Analysis/BasicAA/nocapture.ll | 21 +
test/Analysis/BasicAA/phi-speculation.ll | 33 +
test/Analysis/BranchProbabilityInfo/basic.ll | 27 +
test/Analysis/CallGraph/do-nothing-intrinsic.ll | 13 +
test/Analysis/CostModel/X86/arith.ll | 42 +
test/Analysis/CostModel/X86/cast.ll | 69 +
test/Analysis/CostModel/X86/cmp.ll | 42 +
test/Analysis/CostModel/X86/i32.ll | 9 +
.../CostModel/X86/insert-extract-at-zero.ll | 40 +
test/Analysis/CostModel/X86/lit.local.cfg | 6 +
test/Analysis/CostModel/X86/loop_v2.ll | 43 +
test/Analysis/CostModel/X86/tiny.ll | 11 +
test/Analysis/CostModel/X86/vectorized-loop.ll | 78 +
test/Analysis/CostModel/lit.local.cfg | 1 +
test/Analysis/CostModel/no_info.ll | 15 +
test/Analysis/DependenceAnalysis/Banerjee.ll | 595 +++
test/Analysis/DependenceAnalysis/Coupled.ll | 509 +++
test/Analysis/DependenceAnalysis/ExactRDIV.ll | 508 +++
test/Analysis/DependenceAnalysis/ExactSIV.ll | 428 +++
test/Analysis/DependenceAnalysis/GCD.ll | 597 +++
test/Analysis/DependenceAnalysis/Preliminary.ll | 469 +++
test/Analysis/DependenceAnalysis/Propagating.ll | 467 +++
test/Analysis/DependenceAnalysis/Separability.ll | 267 ++
test/Analysis/DependenceAnalysis/StrongSIV.ll | 342 ++
test/Analysis/DependenceAnalysis/SymbolicRDIV.ll | 312 ++
test/Analysis/DependenceAnalysis/SymbolicSIV.ll | 330 ++
.../Analysis/DependenceAnalysis/WeakCrossingSIV.ll | 220 ++
test/Analysis/DependenceAnalysis/WeakZeroDstSIV.ll | 212 ++
test/Analysis/DependenceAnalysis/WeakZeroSrcSIV.ll | 212 ++
test/Analysis/DependenceAnalysis/ZIV.ll | 53 +
test/Analysis/DependenceAnalysis/lit.local.cfg | 1 +
test/Analysis/LoopDependenceAnalysis/alias.ll | 44 -
test/Analysis/LoopDependenceAnalysis/lit.local.cfg | 1 -
test/Analysis/LoopDependenceAnalysis/siv-strong.ll | 110 -
.../LoopDependenceAnalysis/siv-weak-crossing.ll | 118 -
.../LoopDependenceAnalysis/siv-weak-zero.ll | 56 -
test/Analysis/LoopDependenceAnalysis/ziv.ll | 63 -
test/Analysis/Profiling/load-branch-weights-ifs.ll | 122 +
.../Profiling/load-branch-weights-loops.ll | 188 +
.../Profiling/load-branch-weights-switches.ll | 165 +
test/Assembler/2008-09-02-FunctionNotes2.ll | 2 +-
test/Assembler/global-addrspace-forwardref.ll | 8 +
test/Assembler/invalid-fwdref1.ll | 4 +
test/Bindings/Ocaml/ipo_opts.ml | 6 +-
test/Bindings/Ocaml/scalar_opts.ml | 6 +-
test/Bindings/Ocaml/target.ml | 6 +-
test/Bindings/Ocaml/vmcore.ml | 38 +-
test/Bitcode/blockaddress.ll | 15 +
test/Bitcode/function-encoding-rel-operands.ll | 49 +
test/BugPoint/crash-narrowfunctiontest.ll | 1 +
test/BugPoint/metadata.ll | 1 +
test/BugPoint/remove_arguments_test.ll | 1 +
test/CMakeLists.txt | 15 +-
test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll | 4 +-
test/CodeGen/ARM/2010-12-07-PEIBug.ll | 2 +-
test/CodeGen/ARM/2011-06-16-TailCallByVal.ll | 5 +
test/CodeGen/ARM/2011-10-26-memset-with-neon.ll | 4 +-
test/CodeGen/ARM/2011-11-29-128bitArithmetics.ll | 135 +-
test/CodeGen/ARM/2012-05-04-vmov.ll | 11 +
test/CodeGen/ARM/2012-05-10-PreferVMOVtoVDUP32.ll | 14 +
test/CodeGen/ARM/2012-08-27-CopyPhysRegCrash.ll | 129 +
test/CodeGen/ARM/2012-08-30-select.ll | 18 +
test/CodeGen/ARM/2012-09-18-ARMv4ISelBug.ll | 11 +
.../ARM/2012-09-25-InlineAsmScalarToVectorConv.ll | 11 +
.../ARM/2012-09-25-InlineAsmScalarToVectorConv2.ll | 11 +
test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll | 56 +
test/CodeGen/ARM/2012-10-04-FixedFrame-vs-byval.ll | 19 +
test/CodeGen/ARM/2012-10-04-LDRB_POST_IMM-Crash.ll | 16 +
.../ARM/2012-10-18-PR14099-ByvalFrameAddress.ll | 29 +
test/CodeGen/ARM/a15-mla.ll | 12 +
test/CodeGen/ARM/a15.ll | 6 +
test/CodeGen/ARM/atomic-op.ll | 10 +
test/CodeGen/ARM/atomicrmw_minmax.ll | 21 +
test/CodeGen/ARM/avoid-cpsr-rmw.ll | 1 +
test/CodeGen/ARM/call-noret-minsize.ll | 27 +
test/CodeGen/ARM/call-noret.ll | 31 +
test/CodeGen/ARM/carry.ll | 13 +
test/CodeGen/ARM/coalesce-subregs.ll | 294 +-
test/CodeGen/ARM/constants.ll | 12 +-
test/CodeGen/ARM/crash-shufflevector.ll | 10 +
test/CodeGen/ARM/darwin-section-order.ll | 21 +
test/CodeGen/ARM/deps-fix.ll | 22 +
test/CodeGen/ARM/div.ll | 17 +-
test/CodeGen/ARM/divmod.ll | 46 +-
test/CodeGen/ARM/domain-conv-vmovs.ll | 100 +
test/CodeGen/ARM/fabss.ll | 4 +-
test/CodeGen/ARM/fadds.ll | 8 +-
test/CodeGen/ARM/fast-isel-pic.ll | 61 +
test/CodeGen/ARM/fast-isel.ll | 66 +
test/CodeGen/ARM/fdivs.ll | 8 +-
test/CodeGen/ARM/fmuls.ll | 8 +-
test/CodeGen/ARM/fp-fast.ll | 60 +
test/CodeGen/ARM/fp_convert.ll | 4 +-
test/CodeGen/ARM/fsubs.ll | 6 +-
test/CodeGen/ARM/ifcvt1.ll | 12 +-
test/CodeGen/ARM/ifcvt12.ll | 15 +
test/CodeGen/ARM/ifcvt5.ll | 12 +-
test/CodeGen/ARM/indirectbr-2.ll | 46 +
test/CodeGen/ARM/integer_insertelement.ll | 35 +
test/CodeGen/ARM/ldr_post.ll | 1 +
test/CodeGen/ARM/ldr_pre.ll | 1 +
test/CodeGen/ARM/longMAC.ll | 44 +
test/CodeGen/ARM/mls.ll | 12 +
test/CodeGen/ARM/neon-fma.ll | 22 +
test/CodeGen/ARM/neon_ld2.ll | 37 +-
test/CodeGen/ARM/opt-shuff-tstore.ll | 4 +-
test/CodeGen/ARM/reg_sequence.ll | 11 +-
test/CodeGen/ARM/select.ll | 2 +-
test/CodeGen/ARM/select_xform.ll | 65 +-
test/CodeGen/ARM/struct_byval.ll | 44 +
test/CodeGen/ARM/sub-cmp-peephole.ll | 21 +
test/CodeGen/ARM/sub.ll | 2 +-
test/CodeGen/ARM/subreg-remat.ll | 4 +-
test/CodeGen/ARM/trap.ll | 12 +
test/CodeGen/ARM/twoaddrinstr.ll | 16 +-
test/CodeGen/ARM/unaligned_load_store.ll | 18 +-
test/CodeGen/ARM/unaligned_load_store_vector.ll | 487 +++
test/CodeGen/ARM/vbsl-constant.ll | 20 +-
test/CodeGen/ARM/vbsl.ll | 97 +
test/CodeGen/ARM/vdup.ll | 70 +
test/CodeGen/ARM/vector-extend-narrow.ll | 11 +
test/CodeGen/ARM/vext.ll | 33 +
test/CodeGen/ARM/vget_lane.ll | 2 +-
test/CodeGen/ARM/vselect_imax.ll | 12 +
test/CodeGen/CellSPU/icmp16.ll | 4 +-
test/CodeGen/Generic/MachineBranchProb.ll | 32 +
test/CodeGen/Hexagon/args.ll | 4 +-
test/CodeGen/Hexagon/newvaluestore.ll | 2 +-
test/CodeGen/Hexagon/remove_lsr.ll | 80 +
test/CodeGen/Hexagon/static.ll | 2 +-
test/CodeGen/MSP430/fp.ll | 17 +
test/CodeGen/Mips/alloca16.ll | 75 +
test/CodeGen/Mips/atomic.ll | 5 +-
test/CodeGen/Mips/atomicops.ll | 40 +
test/CodeGen/Mips/brconeq.ll | 38 +
test/CodeGen/Mips/brconeqk.ll | 22 +
test/CodeGen/Mips/brconeqz.ll | 20 +
test/CodeGen/Mips/brconge.ll | 37 +
test/CodeGen/Mips/brcongt.ll | 25 +
test/CodeGen/Mips/brconle.ll | 37 +
test/CodeGen/Mips/brconlt.ll | 27 +
test/CodeGen/Mips/brconne.ll | 26 +
test/CodeGen/Mips/brconnek.ll | 25 +
test/CodeGen/Mips/brconnez.ll | 24 +
test/CodeGen/Mips/brdelayslot.ll | 34 +-
test/CodeGen/Mips/brind.ll | 40 +
test/CodeGen/Mips/check-noat.ll | 11 +
test/CodeGen/Mips/div.ll | 18 +
test/CodeGen/Mips/div_rem.ll | 21 +
test/CodeGen/Mips/divu.ll | 18 +
test/CodeGen/Mips/divu_remu.ll | 23 +
test/CodeGen/Mips/dsp-r1.ll | 1241 +++++++
test/CodeGen/Mips/dsp-r2.ll | 568 +++
test/CodeGen/Mips/eh-dwarf-cfa.ll | 63 +
test/CodeGen/Mips/helloworld.ll | 4 +-
test/CodeGen/Mips/i32k.ll | 17 +
test/CodeGen/Mips/init-array.ll | 14 +
test/CodeGen/Mips/largeimm1.ll | 4 +-
test/CodeGen/Mips/largeimmprinting.ll | 22 +-
test/CodeGen/Mips/llcarry.ll | 51 +
test/CodeGen/Mips/longbranch.ll | 10 +-
test/CodeGen/Mips/mips64-sret.ll | 16 +
test/CodeGen/Mips/misha.ll | 69 +
test/CodeGen/Mips/mul.ll | 17 +
test/CodeGen/Mips/mulll.ll | 21 +
test/CodeGen/Mips/mulull.ll | 21 +
test/CodeGen/Mips/null.ll | 2 +-
test/CodeGen/Mips/o32_cc_byval.ll | 10 +
test/CodeGen/Mips/rem.ll | 19 +
test/CodeGen/Mips/remat-immed-load.ll | 51 +
test/CodeGen/Mips/remu.ll | 18 +
test/CodeGen/Mips/return-vector.ll | 244 ++
test/CodeGen/Mips/selpat.ll | 350 ++
test/CodeGen/Mips/seteq.ll | 21 +
test/CodeGen/Mips/seteqz.ll | 24 +
test/CodeGen/Mips/setge.ll | 27 +
test/CodeGen/Mips/setgek.ll | 18 +
test/CodeGen/Mips/setle.ll | 26 +
test/CodeGen/Mips/setlt.ll | 21 +
test/CodeGen/Mips/setltk.ll | 20 +
test/CodeGen/Mips/setne.ll | 20 +
test/CodeGen/Mips/setuge.ll | 26 +
test/CodeGen/Mips/setugt.ll | 21 +
test/CodeGen/Mips/setule.ll | 26 +
test/CodeGen/Mips/setult.ll | 21 +
test/CodeGen/Mips/setultk.ll | 20 +
test/CodeGen/Mips/small-section-reserve-gp.ll | 12 +
test/CodeGen/Mips/stchar.ll | 90 +
test/CodeGen/Mips/stldst.ll | 41 +
test/CodeGen/Mips/tailcall.ll | 245 ++
test/CodeGen/Mips/tls-alias.ll | 2 +-
test/CodeGen/Mips/tls.ll | 12 +-
test/CodeGen/Mips/tls16.ll | 13 +
test/CodeGen/Mips/tls16_2.ll | 15 +
test/CodeGen/Mips/uitofp.ll | 12 +
test/CodeGen/Mips/ul1.ll | 15 +
test/CodeGen/Mips/vector-load-store.ll | 27 +
test/CodeGen/NVPTX/global-ordering.ll | 20 +
test/CodeGen/NVPTX/param-align.ll | 25 +
test/CodeGen/NVPTX/pr13291-i1-store.ll | 26 +
test/CodeGen/NVPTX/ptx-version-30.ll | 6 +
test/CodeGen/NVPTX/ptx-version-31.ll | 6 +
test/CodeGen/NVPTX/sm-version-10.ll | 6 +
test/CodeGen/NVPTX/sm-version-11.ll | 6 +
test/CodeGen/NVPTX/sm-version-12.ll | 6 +
test/CodeGen/NVPTX/sm-version-13.ll | 6 +
test/CodeGen/NVPTX/sm-version-20.ll | 6 +
test/CodeGen/NVPTX/sm-version-21.ll | 6 +
test/CodeGen/NVPTX/sm-version-30.ll | 6 +
test/CodeGen/NVPTX/sm-version-35.ll | 6 +
test/CodeGen/PowerPC/2010-03-09-indirect-call.ll | 5 +-
test/CodeGen/PowerPC/2012-09-16-TOC-entry-check.ll | 27 +
test/CodeGen/PowerPC/2012-10-11-dynalloc.ll | 18 +
test/CodeGen/PowerPC/2012-10-12-bitcast.ll | 20 +
test/CodeGen/PowerPC/asm-Zy.ll | 14 +
test/CodeGen/PowerPC/big-endian-formal-args.ll | 4 +-
test/CodeGen/PowerPC/bl8_elf_nop.ll | 16 -
test/CodeGen/PowerPC/coalesce-ext.ll | 3 +-
test/CodeGen/PowerPC/cr1eq-no-extra-moves.ll | 26 +
test/CodeGen/PowerPC/crsave.ll | 49 +
test/CodeGen/PowerPC/emptystruct.ll | 51 +
test/CodeGen/PowerPC/floatPSA.ll | 97 +
test/CodeGen/PowerPC/fsl-e500mc.ll | 22 +
test/CodeGen/PowerPC/fsl-e5500.ll | 22 +
test/CodeGen/PowerPC/i64_fp_round.ll | 27 +
test/CodeGen/PowerPC/inlineasm-copy.ll | 9 +-
test/CodeGen/PowerPC/int-fp-conv-1.ll | 3 +-
test/CodeGen/PowerPC/jaggedstructs.ll | 48 +
test/CodeGen/PowerPC/misched.ll | 45 +
test/CodeGen/PowerPC/novrsave.ll | 15 +
test/CodeGen/PowerPC/ppc64-abi-extend.ll | 97 +
test/CodeGen/PowerPC/ppc64-align-long-double.ll | 26 +
test/CodeGen/PowerPC/ppc64-calls.ll | 63 +
test/CodeGen/PowerPC/ppc64-ind-call.ll | 16 -
test/CodeGen/PowerPC/ppc64-linux-func-size.ll | 1 +
test/CodeGen/PowerPC/ppc64-toc.ll | 68 +
test/CodeGen/PowerPC/ppc64-zext.ll | 11 +
test/CodeGen/PowerPC/pr12757.ll | 14 +
test/CodeGen/PowerPC/pr13641.ll | 11 +
test/CodeGen/PowerPC/pr13891.ll | 27 +
test/CodeGen/PowerPC/remat-imm.ll | 16 +
test/CodeGen/PowerPC/structsinmem.ll | 227 ++
test/CodeGen/PowerPC/structsinregs.ll | 213 ++
test/CodeGen/PowerPC/varargs-struct-float.ll | 23 +
test/CodeGen/PowerPC/vec_cmp.ll | 527 +++
test/CodeGen/PowerPC/vec_conv.ll | 57 +
test/CodeGen/PowerPC/vec_extload.ll | 155 +
test/CodeGen/PowerPC/vec_sqrt.ll | 71 +
test/CodeGen/PowerPC/vrspill.ll | 19 +
test/CodeGen/SPARC/2011-01-11-CC.ll | 2 +-
test/CodeGen/Thumb2/buildvector-crash.ll | 4 +-
test/CodeGen/Thumb2/carry.ll | 13 +
test/CodeGen/Thumb2/cortex-fp.ll | 6 +-
test/CodeGen/Thumb2/div.ll | 10 +
test/CodeGen/Thumb2/longMACt.ll | 44 +
test/CodeGen/Thumb2/thumb2-mla.ll | 7 +
test/CodeGen/Thumb2/thumb2-select_xform.ll | 4 +-
test/CodeGen/Thumb2/thumb2-smla.ll | 4 +
test/CodeGen/Thumb2/thumb2-uxtb.ll | 4 +-
test/CodeGen/X86/2010-01-08-Atomic64Bug.ll | 19 +-
test/CodeGen/X86/2012-01-18-vbitcast.ll | 4 +-
test/CodeGen/X86/2012-03-15-build_vector_wl.ll | 2 +-
test/CodeGen/X86/2012-04-26-sdglue.ll | 2 +-
test/CodeGen/X86/2012-07-10-extload64.ll | 4 +-
test/CodeGen/X86/2012-08-16-setcc.ll | 45 +
test/CodeGen/X86/2012-08-28-UnsafeMathCrash.ll | 20 +
test/CodeGen/X86/2012-09-13-dagco-fneg.ll | 21 +
test/CodeGen/X86/2012-09-28-CGPBug.ll | 53 +
test/CodeGen/X86/2012-10-02-DAGCycle.ll | 52 +
test/CodeGen/X86/2012-10-03-DAGCycle.ll | 31 +
test/CodeGen/X86/2012-10-18-crash-dagco.ll | 61 +
test/CodeGen/X86/MergeConsecutiveStores.ll | 305 ++
test/CodeGen/X86/StackColoring-dbg.ll | 30 +
test/CodeGen/X86/StackColoring.ll | 410 +++
test/CodeGen/X86/add-of-carry.ll | 13 +
test/CodeGen/X86/atom-bypass-slow-division.ll | 112 +
test/CodeGen/X86/atom-shuf.ll | 9 +
test/CodeGen/X86/atomic-minmax-i6432.ll | 67 +
test/CodeGen/X86/atomic-pointer.ll | 22 +
test/CodeGen/X86/atomic16.ll | 250 ++
test/CodeGen/X86/atomic32.ll | 250 ++
test/CodeGen/X86/atomic64.ll | 216 ++
test/CodeGen/X86/atomic6432.ll | 208 ++
test/CodeGen/X86/atomic8.ll | 250 ++
test/CodeGen/X86/atomic_add.ll | 3 +-
test/CodeGen/X86/atomic_op.ll | 11 +-
test/CodeGen/X86/avx-basic.ll | 4 +-
test/CodeGen/X86/avx-intel-ocl.ll | 107 +
test/CodeGen/X86/avx-intrinsics-x86.ll | 52 +-
test/CodeGen/X86/avx-shuffle.ll | 10 +-
test/CodeGen/X86/avx-vextractf128.ll | 88 +-
test/CodeGen/X86/avx2-shuffle.ll | 34 +
test/CodeGen/X86/bitcast-i256.ll | 11 +
test/CodeGen/X86/bool-simplify.ll | 18 +-
test/CodeGen/X86/buildvec-insertvec.ll | 15 +
test/CodeGen/X86/cmov-fp.ll | 451 +++
test/CodeGen/X86/crash.ll | 147 +
test/CodeGen/X86/cvtv2f32.ll | 25 +
test/CodeGen/X86/early-ifcvt-crash.ll | 32 +
test/CodeGen/X86/early-ifcvt.ll | 77 +-
test/CodeGen/X86/extract-concat.ll | 17 +
test/CodeGen/X86/fast-cc-callee-pops.ll | 4 +-
test/CodeGen/X86/fast-cc-merge-stack-adj.ll | 2 +-
test/CodeGen/X86/fast-cc-pass-in-regs.ll | 4 +-
test/CodeGen/X86/fast-isel-x86-64.ll | 21 +-
test/CodeGen/X86/fma.ll | 16 +-
test/CodeGen/X86/fma3-intrinsics.ll | 4 +-
test/CodeGen/X86/fma4-intrinsics-x86_64.ll | 1 +
test/CodeGen/X86/fma_patterns.ll | 103 +-
test/CodeGen/X86/fold-load.ll | 4 +-
test/CodeGen/X86/fp-fast.ll | 57 +
test/CodeGen/X86/fp-load-trunc.ll | 61 +
test/CodeGen/X86/fp-trunc.ll | 53 +-
test/CodeGen/X86/handle-move.ll | 74 +
test/CodeGen/X86/inline-asm-tied.ll | 9 +
test/CodeGen/X86/inline-asm.ll | 7 +
test/CodeGen/X86/inlineasm-sched-bug.ll | 13 +
test/CodeGen/X86/jump_sign.ll | 56 +-
test/CodeGen/X86/misched-balance.ll | 230 ++
test/CodeGen/X86/misched-ilp.ll | 25 +
test/CodeGen/X86/misched-new.ll | 28 +-
test/CodeGen/X86/mmx-builtins.ll | 14 +
test/CodeGen/X86/ms-inline-asm.ll | 63 +
test/CodeGen/X86/mulx32.ll | 22 +
test/CodeGen/X86/mulx64.ll | 22 +
test/CodeGen/X86/phys_subreg_coalesce-3.ll | 6 +-
test/CodeGen/X86/pic_jumptable.ll | 12 +
test/CodeGen/X86/pmovext.ll | 22 +
test/CodeGen/X86/pointer-vector.ll | 5 +-
test/CodeGen/X86/pr11334.ll | 8 +
test/CodeGen/X86/pr11985.ll | 19 +
test/CodeGen/X86/pr12312.ll | 155 +
test/CodeGen/X86/pr12359.ll | 10 +
test/CodeGen/X86/pr13458.ll | 14 +
test/CodeGen/X86/pr13859.ll | 28 +
test/CodeGen/X86/pr13899.ll | 58 +
test/CodeGen/X86/pr14088.ll | 25 +
test/CodeGen/X86/pr14090.ll | 76 +
test/CodeGen/X86/pr14098.ll | 23 +
test/CodeGen/X86/pr14161.ll | 38 +
test/CodeGen/X86/pr14204.ll | 15 +
test/CodeGen/X86/pr14314.ll | 13 +
test/CodeGen/X86/pr14333.ll | 12 +
test/CodeGen/X86/pr5145.ll | 35 +
test/CodeGen/X86/promote.ll | 2 +-
test/CodeGen/X86/ptr-rotate.ll | 2 +-
test/CodeGen/X86/red-zone2.ll | 7 +-
test/CodeGen/X86/rot32.ll | 29 +-
test/CodeGen/X86/rot64.ll | 31 +-
test/CodeGen/X86/rotate2.ll | 2 +-
test/CodeGen/X86/rtm.ll | 30 +
test/CodeGen/X86/select.ll | 13 +
test/CodeGen/X86/select_const.ll | 16 +
test/CodeGen/X86/shift-bmi2.ll | 178 +
test/CodeGen/X86/sincos.ll | 13 +
test/CodeGen/X86/sjlj.ll | 60 +
test/CodeGen/X86/smul-with-overflow.ll | 14 +
test/CodeGen/X86/sse-intel-ocl.ll | 93 +
test/CodeGen/X86/sse-minmax.ll | 80 +-
test/CodeGen/X86/sse_partial_update.ll | 36 +
test/CodeGen/X86/tailcall-64.ll | 67 +-
test/CodeGen/X86/targetLoweringGeneric.ll | 2 +-
test/CodeGen/X86/tls-pic.ll | 12 +-
test/CodeGen/X86/trunc-ext-ld-st.ll | 15 +-
test/CodeGen/X86/vec_compare-2.ll | 3 +-
test/CodeGen/X86/vec_fabs.ll | 38 +
test/CodeGen/X86/vec_floor.ll | 38 +
test/CodeGen/X86/vec_fpext.ll | 32 +-
test/CodeGen/X86/vec_shuffle-26.ll | 45 +-
test/CodeGen/X86/vec_shuffle-30.ll | 14 +-
test/CodeGen/X86/widen_cast-1.ll | 2 +-
test/CodeGen/X86/widen_load-1.ll | 13 +-
test/CodeGen/X86/widen_load-2.ll | 2 +-
test/CodeGen/X86/xmulo.ll | 50 +
test/DebugInfo/2010-04-13-PubType.ll | 47 -
.../DebugInfo/Inputs/dwarfdump-inl-test.elf-x86-64 | Bin 0 -> 7468 bytes
test/DebugInfo/X86/2010-04-13-PubType.ll | 47 +
test/DebugInfo/X86/DW_AT_byte_size.ll | 3 +-
test/DebugInfo/X86/DW_AT_object_pointer.ll | 79 +
test/DebugInfo/X86/concrete_out_of_line.ll | 7 +-
test/DebugInfo/X86/elf-names.ll | 109 +
test/DebugInfo/X86/enum-fwd-decl.ll | 16 +-
test/DebugInfo/X86/linkage-name.ll | 56 +
test/DebugInfo/X86/pr13303.ll | 28 -
test/DebugInfo/X86/prologue-stack.ll | 35 +
test/DebugInfo/X86/stringpool.ll | 4 +-
test/DebugInfo/bug_null_debuginfo.ll | 3 +-
test/DebugInfo/dwarfdump-inlining.test | 28 +
test/DebugInfo/dwarfdump-test.test | 10 +
test/ExecutionEngine/2002-12-16-ArgTest.ll | 1 +
test/ExecutionEngine/MCJIT/2002-12-16-ArgTest.ll | 2 +-
.../MCJIT/2003-01-04-ArgumentBug.ll | 2 +-
test/ExecutionEngine/MCJIT/2003-01-04-LoopTest.ll | 2 +-
test/ExecutionEngine/MCJIT/2003-01-04-PhiTest.ll | 2 +-
test/ExecutionEngine/MCJIT/2003-01-09-SARTest.ll | 2 +-
test/ExecutionEngine/MCJIT/2003-01-10-FUCOM.ll | 2 +-
.../MCJIT/2003-01-15-AlignmentTest.ll | 2 +-
.../MCJIT/2003-05-06-LivenessClobber.ll | 2 +-
.../MCJIT/2003-05-07-ArgumentTest.ll | 2 +-
.../MCJIT/2003-05-11-PHIRegAllocBug.ll | 2 +-
test/ExecutionEngine/MCJIT/2003-06-04-bzip2-bug.ll | 2 +-
test/ExecutionEngine/MCJIT/2003-06-05-PHIBug.ll | 2 +-
.../MCJIT/2003-08-15-AllocaAssertion.ll | 2 +-
.../MCJIT/2003-08-21-EnvironmentTest.ll | 2 +-
.../MCJIT/2003-08-23-RegisterAllocatePhysReg.ll | 2 +-
...-10-18-PHINode-ConstantExpr-CondCode-Failure.ll | 2 +-
.../MCJIT/2005-12-02-TailCallBug.ll | 2 +-
.../MCJIT/2007-12-10-APIntLoadStore.ll | 2 +-
.../MCJIT/2008-06-05-APInt-OverAShr.ll | 2 +-
.../ExecutionEngine/MCJIT/2010-01-15-UndefValue.ll | 2 +-
test/ExecutionEngine/MCJIT/fpbitcast.ll | 2 +-
test/ExecutionEngine/MCJIT/hello.ll | 2 +-
test/ExecutionEngine/MCJIT/hello2.ll | 2 +-
test/ExecutionEngine/MCJIT/lit.local.cfg | 10 +-
test/ExecutionEngine/MCJIT/pr13727.ll | 88 +
test/ExecutionEngine/MCJIT/simplesttest.ll | 2 +-
test/ExecutionEngine/MCJIT/simpletest.ll | 2 +-
test/ExecutionEngine/MCJIT/stubs.ll | 2 +-
test/ExecutionEngine/MCJIT/test-arith.ll | 2 +-
test/ExecutionEngine/MCJIT/test-branch.ll | 2 +-
.../MCJIT/test-call-no-external-funcs.ll | 2 +-
test/ExecutionEngine/MCJIT/test-call.ll | 2 +-
test/ExecutionEngine/MCJIT/test-cast.ll | 2 +-
.../MCJIT/test-common-symbols-alignment.ll | 32 +
test/ExecutionEngine/MCJIT/test-common-symbols.ll | 2 +-
test/ExecutionEngine/MCJIT/test-constantexpr.ll | 2 +-
test/ExecutionEngine/MCJIT/test-data-align.ll | 15 +
.../MCJIT/test-fp-no-external-funcs.ll | 2 +-
test/ExecutionEngine/MCJIT/test-fp.ll | 2 +-
.../MCJIT/test-global-init-nonzero.ll | 2 +-
test/ExecutionEngine/MCJIT/test-global.ll | 2 +-
test/ExecutionEngine/MCJIT/test-loadstore.ll | 2 +-
test/ExecutionEngine/MCJIT/test-local.ll | 2 +-
test/ExecutionEngine/MCJIT/test-logical.ll | 2 +-
test/ExecutionEngine/MCJIT/test-loop.ll | 2 +-
test/ExecutionEngine/MCJIT/test-phi.ll | 2 +-
test/ExecutionEngine/MCJIT/test-ptr-reloc.ll | 16 +
test/ExecutionEngine/MCJIT/test-ret.ll | 2 +-
test/ExecutionEngine/MCJIT/test-return.ll | 2 +-
test/ExecutionEngine/MCJIT/test-setcond-fp.ll | 2 +-
test/ExecutionEngine/MCJIT/test-setcond-int.ll | 2 +-
test/ExecutionEngine/MCJIT/test-shift.ll | 2 +-
test/ExecutionEngine/lit.local.cfg | 11 +
test/ExecutionEngine/test-fp-no-external-funcs.ll | 1 +
test/ExecutionEngine/test-fp.ll | 1 +
test/Feature/linker_private_linkages.ll | 1 -
test/Feature/minsize_attr.ll | 7 +
test/Instrumentation/AddressSanitizer/basic.ll | 20 +
.../do-not-instrument-internal-globals.ll | 19 +
.../AddressSanitizer/instrument_global.ll | 2 +-
.../instrument_initializer_metadata.ll | 36 +
test/Instrumentation/ThreadSanitizer/atomic.ll | 1712 ++++++++-
test/MC/ARM/arm-arithmetic-aliases.s | 4 +
test/MC/ARM/arm-shift-encoding.s | 119 +
test/MC/ARM/basic-thumb-instructions.s | 4 +-
test/MC/ARM/diagnostics.s | 50 +
test/MC/ARM/elf-jump24-fixup.s | 9 +
test/MC/ARM/thumb-shift-encoding.s | 45 +
test/MC/ARM/thumb2-b.w-encodingT4.s | 12 +
test/MC/AsmParser/bad-macro.s | 9 +
test/MC/AsmParser/directive_lcomm.s | 11 +-
test/MC/AsmParser/labels.s | 2 +-
test/MC/AsmParser/macro-args.s | 12 +-
test/MC/AsmParser/macro-rept-err1.s | 2 +-
test/MC/AsmParser/macros-darwin.s | 9 +
test/MC/AsmParser/macros.s | 64 +-
test/MC/COFF/comm.ll | 13 +
test/MC/COFF/global_ctors.ll | 28 -
test/MC/COFF/global_ctors_dtors.ll | 39 +
.../Disassembler/ARM/invalid-VLD1DUPq8_UPD-arm.txt | 4 +-
.../ARM/invalid-VLD1LNd32_UPD-thumb.txt | 4 +
.../ARM/invalid-VLD4DUPd32_UPD-thumb.txt | 4 +
.../ARM/invalid-VLD4LNd32_UPD-thumb.txt | 4 +
.../ARM/invalid-VST1LNd32_UPD-thumb.txt | 4 +
.../ARM/invalid-VST4LNd32_UPD-thumb.txt | 4 +
test/MC/Disassembler/ARM/marked-up-thumb.txt | 7 +
test/MC/Disassembler/ARM/neont-VLD-reencoding.txt | 77 +
test/MC/Disassembler/ARM/neont-VST-reencoding.txt | 77 +
test/MC/Disassembler/ARM/thumb-printf.txt | 6 +-
test/MC/Disassembler/ARM/thumb-tests.txt | 2 +-
test/MC/Disassembler/ARM/thumb1.txt | 2 +
test/MC/Disassembler/ARM/thumb2.txt | 3 +
test/MC/Disassembler/Mips/mips64.txt | 12 +-
test/MC/Disassembler/Mips/mips64_le.txt | 12 +-
test/MC/Disassembler/Mips/mips64r2.txt | 12 +-
test/MC/Disassembler/Mips/mips64r2_le.txt | 12 +-
test/MC/Disassembler/X86/marked-up.txt | 6 +
test/MC/ELF/cfi-reg.s | 18 +
test/MC/ELF/lcomm.s | 21 +
.../MachO/ARM/long-call-branch-island-relocation.s | 43 +
test/MC/MachO/absolute.s | 158 +
test/MC/MachO/gen-dwarf-cpp.s | 22 +
test/MC/MachO/gen-dwarf-macro-cpp.s | 17 +
test/MC/MachO/i386-large-relocations.s | 36 +
test/MC/MachO/lit.local.cfg | 2 +-
test/MC/MachO/x86-data-in-code.ll | 108 +
test/MC/Markup/basic-markup.mc | 16 +
test/MC/Markup/lit.local.cfg | 2 +
test/MC/Mips/do_switch.ll | 39 +
test/MC/Mips/elf-N64.ll | 2 +-
test/MC/Mips/higher_highest.ll | 7 +-
test/MC/Mips/mips-alu-instructions.s | 100 +
test/MC/Mips/mips-coprocessor-encodings.s | 37 +
test/MC/Mips/mips-expansions.s | 27 +
test/MC/Mips/mips-fpu-instructions.s | 178 +
test/MC/Mips/mips-jump-instructions.s | 72 +
test/MC/Mips/mips-memory-instructions.s | 45 +
test/MC/Mips/mips-register-names.s | 71 +
test/MC/Mips/mips-relocations.s | 41 +
test/MC/Mips/mips64-register-names.s | 70 +
test/MC/Mips/mips64extins.ll | 57 +
test/MC/Mips/mips64shift.ll | 5 +-
test/MC/Mips/mips_directives.s | 16 +
test/MC/Mips/multi-64bit-func.ll | 4 +-
test/MC/Mips/sext_64_32.ll | 4 +-
test/MC/PowerPC/lit.local.cfg | 5 +
test/MC/PowerPC/ppc64-initial-cfa.ll | 41 +
test/MC/PowerPC/ppc64-relocs-01.ll | 66 +
test/MC/PowerPC/ppc64-tls-relocs-01.ll | 28 +
test/MC/X86/intel-syntax-2.s | 6 +-
test/MC/X86/x86-32-ms-inline-asm.s | 60 +
test/MC/X86/x86-64.s | 4 +
test/MC/X86/x86_64-rtm-encoding.s | 13 +
test/MC/X86/x86_nop.s | 13 +
test/Makefile | 18 +-
test/Object/Inputs/dext-test.elf-mips64r2 | Bin 0 -> 802 bytes
test/Object/Inputs/relocations.elf-x86-64 | Bin 0 -> 1032 bytes
test/Object/Mips/feature.test | 11 +
test/Object/Mips/lit.local.cfg | 5 +
test/Object/nm-shared-object.test | 26 +-
test/Object/objdump-relocations.test | 13 +
test/Object/objdump-symbol-table.test | 8 +
test/Other/FileCheck-space.txt | 9 +
test/Other/Inputs/llvm-cov.gcda | Bin 0 -> 296 bytes
test/Other/Inputs/llvm-cov.gcno | Bin 0 -> 984 bytes
test/Other/ResponseFile.ll | 9 +
test/Other/extract-alias.ll | 49 +
test/Other/extract-weak-odr.ll | 23 +
test/Other/extract.ll | 9 +-
test/Other/link-opts.ll | 13 +
test/Other/lint.ll | 25 +-
test/Other/lit.local.cfg | 2 +-
test/Other/llvm-cov.test | 3 +
test/Other/llvm-nm-without-aliases.ll | 25 +
test/Other/spir_cc.ll | 13 +
test/TableGen/if.td | 46 +-
test/TableGen/list-element-bitref.td | 15 +
test/TableGen/pr8330.td | 29 +
test/Transforms/BBVectorize/X86/cmp-types.ll | 16 +
test/Transforms/BBVectorize/X86/loop1.ll | 53 +
test/Transforms/BBVectorize/X86/sh-rec.ll | 54 +
test/Transforms/BBVectorize/X86/sh-rec2.ll | 85 +
test/Transforms/BBVectorize/X86/sh-rec3.ll | 170 +
test/Transforms/BBVectorize/X86/sh-types.ll | 25 +
test/Transforms/BBVectorize/X86/simple-ldstr.ll | 29 +
test/Transforms/BBVectorize/X86/simple.ll | 103 +
test/Transforms/BBVectorize/X86/vs-cast.ll | 12 +
test/Transforms/BBVectorize/cycle.ll | 2 +-
test/Transforms/BBVectorize/lit.local.cfg | 5 +
test/Transforms/BBVectorize/loop1.ll | 2 +-
test/Transforms/BBVectorize/search-limit.ll | 2 +-
test/Transforms/BBVectorize/simple-int.ll | 6 +-
test/Transforms/BBVectorize/simple-ldstr-ptrs.ll | 53 +
test/Transforms/BBVectorize/simple-ldstr.ll | 64 +-
test/Transforms/BBVectorize/simple-sel.ll | 4 +-
test/Transforms/BBVectorize/simple.ll | 66 +-
test/Transforms/ConstProp/loads.ll | 132 +-
.../Transforms/CorrelatedValuePropagation/crash.ll | 25 +
test/Transforms/DeadArgElim/dbginfo.ll | 64 +
test/Transforms/DeadStoreElimination/libcalls.ll | 70 +
test/Transforms/DeadStoreElimination/simple.ll | 14 +
test/Transforms/EarlyCSE/commute.ll | 66 +
test/Transforms/GVN/crash.ll | 36 +
test/Transforms/GVN/malloc-load-removal.ll | 31 +
test/Transforms/GVN/pr14166.ll | 27 +
test/Transforms/GVN/rle.ll | 8 +-
test/Transforms/GlobalOpt/blockaddress.ll | 20 +
test/Transforms/GlobalOpt/load-store-global.ll | 25 +-
test/Transforms/GlobalOpt/tls.ll | 53 +
.../IndVarSimplify/2004-04-05-InvokeCastCrash.ll | 4 +-
.../2012-10-19-congruent-constant.ll | 27 +
test/Transforms/IndVarSimplify/crash.ll | 44 +
.../IndVarSimplify/eliminate-comparison.ll | 103 +
test/Transforms/IndVarSimplify/no-iv-rewrite.ll | 1 -
test/Transforms/IndVarSimplify/verify-scev.ll | 421 +++
test/Transforms/Inline/recursive.ll | 38 +
test/Transforms/InstCombine/2012-07-25-LoadPart.ll | 10 +-
.../Transforms/InstCombine/2012-08-28-udiv_ashl.ll | 57 +
.../InstCombine/2012-09-17-ZeroSizedAlloca.ll | 24 +
.../2012-09-24-MemcpyFromGlobalCrash.ll | 19 +
.../InstCombine/2012-10-25-vector-of-pointers.ll | 51 +
test/Transforms/InstCombine/align-addr.ll | 16 +
test/Transforms/InstCombine/alloca.ll | 16 +
test/Transforms/InstCombine/and-fcmp.ll | 2 +-
test/Transforms/InstCombine/cast.ll | 206 ++
.../InstCombine/disable-simplify-libcalls.ll | 236 ++
test/Transforms/InstCombine/div-shift.ll | 14 +
test/Transforms/InstCombine/fcmp.ll | 93 +-
test/Transforms/InstCombine/fold-vector-select.ll | 153 +-
test/Transforms/InstCombine/icmp.ll | 18 +
test/Transforms/InstCombine/memcmp-1.ll | 72 +
test/Transforms/InstCombine/memcmp-2.ll | 17 +
test/Transforms/InstCombine/memcpy-1.ll | 17 +
test/Transforms/InstCombine/memcpy-2.ll | 17 +
test/Transforms/InstCombine/memcpy-from-global.ll | 136 +
test/Transforms/InstCombine/memcpy_chk-1.ll | 60 +
test/Transforms/InstCombine/memcpy_chk-2.ll | 24 +
test/Transforms/InstCombine/memmove-1.ll | 17 +
test/Transforms/InstCombine/memmove-2.ll | 17 +
test/Transforms/InstCombine/memmove_chk-1.ll | 60 +
test/Transforms/InstCombine/memmove_chk-2.ll | 24 +
test/Transforms/InstCombine/memset-1.ll | 17 +
test/Transforms/InstCombine/memset-2.ll | 17 +
test/Transforms/InstCombine/memset_chk-1.ll | 61 +
test/Transforms/InstCombine/memset_chk-2.ll | 20 +
test/Transforms/InstCombine/memset_chk.ll | 18 -
test/Transforms/InstCombine/obfuscated_splat.ll | 11 +
test/Transforms/InstCombine/objsize.ll | 3 +-
test/Transforms/InstCombine/select.ll | 34 +
test/Transforms/InstCombine/stpcpy-1.ll | 46 +
test/Transforms/InstCombine/stpcpy-2.ll | 22 +
test/Transforms/InstCombine/stpcpy_chk-1.ll | 96 +
test/Transforms/InstCombine/stpcpy_chk-2.ll | 21 +
test/Transforms/InstCombine/strcat-1.ll | 38 +
test/Transforms/InstCombine/strcat-2.ll | 32 +
test/Transforms/InstCombine/strcat-3.ll | 22 +
test/Transforms/InstCombine/strchr-1.ll | 54 +
test/Transforms/InstCombine/strchr-2.ll | 21 +
test/Transforms/InstCombine/strcmp-1.ll | 82 +
test/Transforms/InstCombine/strcmp-2.ll | 20 +
test/Transforms/InstCombine/strcpy-1.ll | 45 +
test/Transforms/InstCombine/strcpy-2.ll | 22 +
test/Transforms/InstCombine/strcpy_chk-1.ll | 94 +
test/Transforms/InstCombine/strcpy_chk-2.ll | 21 +
test/Transforms/InstCombine/strcpy_chk.ll | 13 -
test/Transforms/InstCombine/strcspn-1.ll | 57 +
test/Transforms/InstCombine/strcspn-2.ll | 21 +
test/Transforms/InstCombine/strlen-1.ll | 97 +
test/Transforms/InstCombine/strlen-2.ll | 18 +
test/Transforms/InstCombine/strncat-1.ll | 37 +
test/Transforms/InstCombine/strncat-2.ll | 53 +
test/Transforms/InstCombine/strncat-3.ll | 22 +
test/Transforms/InstCombine/strncmp-1.ll | 99 +
test/Transforms/InstCombine/strncmp-2.ll | 20 +
test/Transforms/InstCombine/strncpy-1.ll | 95 +
test/Transforms/InstCombine/strncpy-2.ll | 22 +
test/Transforms/InstCombine/strncpy_chk-1.ll | 66 +
test/Transforms/InstCombine/strncpy_chk-2.ll | 21 +
test/Transforms/InstCombine/strpbrk-1.ll | 68 +
test/Transforms/InstCombine/strpbrk-2.ll | 23 +
test/Transforms/InstCombine/strrchr-1.ll | 54 +
test/Transforms/InstCombine/strrchr-2.ll | 21 +
test/Transforms/InstCombine/strspn-1.ll | 56 +
test/Transforms/InstCombine/strstr-1.ll | 65 +
test/Transforms/InstCombine/strstr-2.ll | 18 +
test/Transforms/InstCombine/strto-1.ll | 82 +
test/Transforms/InstCombine/struct-assign-tbaa.ll | 44 +
test/Transforms/InstCombine/udiv-simplify-bug-1.ll | 4 +-
test/Transforms/InstCombine/vec_demanded_elts.ll | 2 +-
test/Transforms/InstCombine/vec_shuffle.ll | 43 +
test/Transforms/InstCombine/vector_gep2.ll | 11 +
test/Transforms/InstCombine/weak-symbols.ll | 33 +
test/Transforms/InstSimplify/compare.ll | 9 +
.../Internalize/2008-05-09-AllButMain.ll | 58 +-
.../Internalize/2009-01-05-InternalizeAliases.ll | 2 +-
test/Transforms/JumpThreading/crash.ll | 53 +
test/Transforms/JumpThreading/select.ll | 36 +
test/Transforms/LICM/2003-12-11-SinkingToPHI.ll | 2 +-
test/Transforms/LICM/hoisting.ll | 28 +-
test/Transforms/LoopIdiom/basic.ll | 33 +
test/Transforms/LoopIdiom/crash.ll | 25 +
test/Transforms/LoopIdiom/non-canonical-loop.ll | 34 +
test/Transforms/LoopIdiom/scev-invalidation.ll | 74 +
test/Transforms/LoopRotate/multiple-exits.ll | 236 ++
.../LoopStrengthReduce/2011-10-03-CritEdgeMerge.ll | 44 +-
test/Transforms/LoopUnroll/pr11361.ll | 2 +-
test/Transforms/LoopUnroll/pr14167.ll | 44 +
.../LoopUnswitch/2011-06-02-CritSwitch.ll | 2 +-
.../Transforms/LoopVectorize/2012-10-20-infloop.ll | 27 +
.../LoopVectorize/2012-10-22-isconsec.ll | 57 +
test/Transforms/LoopVectorize/X86/avx1.ll | 49 +
.../LoopVectorize/X86/conversion-cost.ll | 48 +
test/Transforms/LoopVectorize/X86/cost-model.ll | 38 +
test/Transforms/LoopVectorize/X86/gcc-examples.ll | 62 +
test/Transforms/LoopVectorize/X86/lit.local.cfg | 6 +
test/Transforms/LoopVectorize/cpp-new-array.ll | 46 +
test/Transforms/LoopVectorize/flags.ll | 53 +
test/Transforms/LoopVectorize/gcc-examples.ll | 650 ++++
test/Transforms/LoopVectorize/increment.ll | 66 +
test/Transforms/LoopVectorize/induction_plus.ll | 30 +
test/Transforms/LoopVectorize/lit.local.cfg | 1 +
test/Transforms/LoopVectorize/non-const-n.ll | 38 +
test/Transforms/LoopVectorize/read-only.ll | 32 +
test/Transforms/LoopVectorize/reduction.ll | 232 ++
test/Transforms/LoopVectorize/runtime-check.ll | 36 +
test/Transforms/LoopVectorize/scalar-select.ll | 37 +
test/Transforms/LoopVectorize/small-loop.ll | 33 +
test/Transforms/LoopVectorize/start-non-zero.ll | 35 +
test/Transforms/LoopVectorize/write-only.ll | 26 +
.../MemCpyOpt/2008-03-13-ReturnSlotBitcast.ll | 4 +-
test/Transforms/MemCpyOpt/align.ll | 24 +-
test/Transforms/MemCpyOpt/form-memset.ll | 24 +
test/Transforms/MetaRenamer/lit.local.cfg | 1 +
test/Transforms/MetaRenamer/metarenamer.ll | 96 +
test/Transforms/ObjCARC/basic.ll | 4 +-
test/Transforms/ObjCARC/nested.ll | 85 +-
test/Transforms/ObjCARC/path-overflow.ll | 329 ++
test/Transforms/PhaseOrdering/gdce.ll | 106 +
test/Transforms/Reassociate/crash.ll | 28 +
test/Transforms/SCCP/loadtest.ll | 5 +-
test/Transforms/SROA/alignment.ll | 171 +
test/Transforms/SROA/basictest.ll | 1136 ++++++
test/Transforms/SROA/big-endian.ll | 119 +
test/Transforms/SROA/fca.ll | 49 +
test/Transforms/SROA/lit.local.cfg | 1 +
test/Transforms/SROA/phi-and-select.ll | 427 +++
test/Transforms/SROA/vector-promotion.ll | 267 ++
test/Transforms/ScalarRepl/memcpy-from-global.ll | 146 -
test/Transforms/SimplifyCFG/SPARC/lit.local.cfg | 6 +
.../SimplifyCFG/SPARC/switch_to_lookup_table.ll | 32 +
test/Transforms/SimplifyCFG/X86/lit.local.cfg | 6 +
.../SimplifyCFG/X86/switch_to_lookup_table.ll | 779 ++++
test/Transforms/SimplifyCFG/phi-undef-loadstore.ll | 28 +
.../SimplifyCFG/preserve-branchweights-partial.ll | 37 +
.../preserve-branchweights-switch-create.ll | 140 +
.../SimplifyCFG/preserve-branchweights.ll | 230 +-
test/Transforms/SimplifyCFG/sink-common-code.ll | 53 +
.../SimplifyLibCalls/2009-02-12-StrTo.ll | 14 -
test/Transforms/SimplifyLibCalls/FFS.ll | 15 +-
test/Transforms/SimplifyLibCalls/StpCpy.ll | 43 -
test/Transforms/SimplifyLibCalls/StrCat.ll | 33 -
test/Transforms/SimplifyLibCalls/StrChr.ll | 26 -
test/Transforms/SimplifyLibCalls/StrCmp.ll | 65 -
test/Transforms/SimplifyLibCalls/StrCpy.ll | 37 -
test/Transforms/SimplifyLibCalls/StrLen.ll | 62 -
test/Transforms/SimplifyLibCalls/StrNCat.ll | 31 -
test/Transforms/SimplifyLibCalls/StrNCmp.ll | 78 -
test/Transforms/SimplifyLibCalls/StrNCpy.ll | 29 -
test/Transforms/SimplifyLibCalls/StrPBrk.ll | 25 -
test/Transforms/SimplifyLibCalls/StrRChr.ll | 23 -
test/Transforms/SimplifyLibCalls/StrSpn.ll | 41 -
test/Transforms/SimplifyLibCalls/StrStr.ll | 60 -
.../SimplifyLibCalls/double-float-shrink.ll | 333 ++
.../SimplifyLibCalls/float-shrink-compare.ll | 179 +
test/Transforms/SimplifyLibCalls/floor.ll | 23 +
test/Transforms/SimplifyLibCalls/memcmp.ll | 35 -
test/Transforms/SimplifyLibCalls/memmove.ll | 12 -
test/Transforms/SimplifyLibCalls/memset-64.ll | 12 -
test/Transforms/SimplifyLibCalls/memset.ll | 12 -
test/Transforms/SimplifyLibCalls/weak-symbols.ll | 26 -
test/Verifier/invoke.ll | 1 -
test/lit.cfg | 24 +-
test/lit.site.cfg.in | 1 +
tools/CMakeLists.txt | 1 +
tools/LLVMBuild.txt | 2 +-
tools/Makefile | 2 +-
tools/bugpoint/ExtractFunction.cpp | 2 +-
tools/bugpoint/OptimizerDriver.cpp | 2 +-
tools/gold/Makefile | 4 +-
tools/gold/gold-plugin.cpp | 10 -
tools/llc/llc.cpp | 219 +-
tools/lli/CMakeLists.txt | 6 +-
tools/lli/LLVMBuild.txt | 2 +-
tools/lli/Makefile | 2 +-
tools/lli/RecordingMemoryManager.cpp | 87 +
tools/lli/RecordingMemoryManager.h | 78 +
tools/lli/RemoteTarget.cpp | 61 +
tools/lli/RemoteTarget.h | 101 +
tools/lli/lli.cpp | 258 +-
tools/llvm-ar/CMakeLists.txt | 1 -
tools/llvm-ar/Makefile | 1 -
tools/llvm-ar/llvm-ar.cpp | 203 +-
tools/llvm-as/CMakeLists.txt | 1 -
tools/llvm-bcanalyzer/CMakeLists.txt | 1 -
tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp | 30 +-
tools/llvm-config/Makefile | 2 +-
tools/llvm-dis/CMakeLists.txt | 1 -
tools/llvm-dwarfdump/llvm-dwarfdump.cpp | 106 +-
tools/llvm-extract/llvm-extract.cpp | 51 +-
tools/llvm-mc/llvm-mc.cpp | 15 +-
tools/llvm-mcmarkup/CMakeLists.txt | 5 +
tools/llvm-mcmarkup/LLVMBuild.txt | 22 +
tools/llvm-mcmarkup/Makefile | 17 +
tools/llvm-mcmarkup/llvm-mcmarkup.cpp | 225 ++
tools/llvm-nm/llvm-nm.cpp | 9 +-
tools/llvm-objdump/llvm-objdump.cpp | 17 +-
tools/llvm-ranlib/CMakeLists.txt | 1 -
tools/llvm-ranlib/Makefile | 1 -
tools/llvm-ranlib/llvm-ranlib.cpp | 59 +-
tools/llvm-rtdyld/llvm-rtdyld.cpp | 8 +-
tools/llvm-stress/llvm-stress.cpp | 4 +
tools/lto/LTOCodeGenerator.cpp | 38 +-
tools/lto/LTOModule.cpp | 37 +-
tools/lto/Makefile | 7 +
tools/lto/lto.exports | 1 +
tools/opt/CMakeLists.txt | 2 +-
tools/opt/LLVMBuild.txt | 2 +-
tools/opt/Makefile | 2 +-
tools/opt/opt.cpp | 98 +-
unittests/ADT/APFloatTest.cpp | 59 +
unittests/ADT/BitVectorTest.cpp | 52 +
unittests/ADT/CMakeLists.txt | 16 +-
unittests/ADT/DenseMapTest.cpp | 33 +
unittests/ADT/DenseSetTest.cpp | 2 +-
unittests/ADT/ImmutableMapTest.cpp | 50 +
unittests/ADT/StringRefTest.cpp | 23 +
unittests/ADT/TripleTest.cpp | 12 +
unittests/Analysis/ScalarEvolutionTest.cpp | 16 +-
unittests/ExecutionEngine/CMakeLists.txt | 1 +
unittests/ExecutionEngine/JIT/CMakeLists.txt | 2 -
.../JIT/IntelJITEventListenerTest.cpp | 7 +-
unittests/ExecutionEngine/JIT/JITTest.cpp | 37 +-
unittests/ExecutionEngine/JIT/Makefile | 7 +
unittests/ExecutionEngine/JIT/MultiJITTest.cpp | 6 +-
unittests/ExecutionEngine/MCJIT/CMakeLists.txt | 25 +
unittests/ExecutionEngine/MCJIT/MCJITTest.cpp | 231 ++
unittests/ExecutionEngine/MCJIT/MCJITTestBase.h | 245 ++
unittests/ExecutionEngine/MCJIT/MCJITTests.def | 1 +
unittests/ExecutionEngine/MCJIT/Makefile | 18 +
.../ExecutionEngine/MCJIT/SectionMemoryManager.cpp | 143 +
.../ExecutionEngine/MCJIT/SectionMemoryManager.h | 118 +
unittests/ExecutionEngine/Makefile | 2 +-
unittests/Support/AlignOfTest.cpp | 129 +-
unittests/Support/CMakeLists.txt | 5 +-
unittests/Support/Casting.cpp | 59 +-
unittests/Support/DataExtractorTest.cpp | 9 +
unittests/Support/MemoryBufferTest.cpp | 99 +
unittests/Support/MemoryTest.cpp | 356 ++
unittests/Support/formatted_raw_ostream_test.cpp | 33 +
unittests/Transforms/Utils/CMakeLists.txt | 1 +
unittests/Transforms/Utils/IntegerDivision.cpp | 142 +
unittests/VMCore/IRBuilderTest.cpp | 12 +
unittests/VMCore/InstructionsTest.cpp | 41 +-
unittests/VMCore/PassManagerTest.cpp | 24 +-
utils/FileCheck/FileCheck.cpp | 6 +-
utils/TableGen/AsmMatcherEmitter.cpp | 558 ++-
utils/TableGen/AsmWriterEmitter.cpp | 73 +-
utils/TableGen/AsmWriterInst.cpp | 23 +-
utils/TableGen/CMakeLists.txt | 3 +-
utils/TableGen/CallingConvEmitter.cpp | 11 +-
utils/TableGen/CodeEmitterGen.cpp | 13 +-
utils/TableGen/CodeGenDAGPatterns.cpp | 666 ++--
utils/TableGen/CodeGenDAGPatterns.h | 63 +-
utils/TableGen/CodeGenInstruction.cpp | 148 +-
utils/TableGen/CodeGenInstruction.h | 23 +-
utils/TableGen/CodeGenMapTable.cpp | 606 ++++
utils/TableGen/CodeGenRegisters.cpp | 112 +-
utils/TableGen/CodeGenRegisters.h | 14 +-
utils/TableGen/CodeGenSchedule.cpp | 1664 ++++++++-
utils/TableGen/CodeGenSchedule.h | 368 +-
utils/TableGen/CodeGenTarget.cpp | 59 +-
utils/TableGen/CodeGenTarget.h | 8 +-
utils/TableGen/DAGISelMatcher.h | 2 -
utils/TableGen/DAGISelMatcherEmitter.cpp | 11 +-
utils/TableGen/DAGISelMatcherGen.cpp | 29 +-
utils/TableGen/DFAPacketizerEmitter.cpp | 168 +-
utils/TableGen/DisassemblerEmitter.cpp | 6 +-
utils/TableGen/EDEmitter.cpp | 44 +-
utils/TableGen/FastISelEmitter.cpp | 13 +-
utils/TableGen/FixedLenDecoderEmitter.cpp | 19 +-
utils/TableGen/InstrInfoEmitter.cpp | 17 +-
utils/TableGen/IntrinsicEmitter.cpp | 79 +-
utils/TableGen/Makefile | 2 -
utils/TableGen/PseudoLoweringEmitter.cpp | 34 +-
utils/TableGen/RegisterInfoEmitter.cpp | 166 +-
utils/TableGen/SequenceToOffsetTable.h | 6 +-
utils/TableGen/SetTheory.cpp | 140 +-
utils/TableGen/SetTheory.h | 10 +-
utils/TableGen/SubtargetEmitter.cpp | 688 +++-
utils/TableGen/TGValueTypes.cpp | 26 +-
utils/TableGen/TableGen.cpp | 159 +-
utils/TableGen/TableGenBackends.h | 1 +
utils/TableGen/X86DisassemblerTables.cpp | 21 +-
utils/TableGen/X86ModRMFilters.h | 25 +-
utils/TableGen/X86RecognizableInstr.cpp | 35 +-
utils/TableGen/X86RecognizableInstr.h | 23 +-
.../ExampleTests/LLVM.InTree/test/Bar/bar-test.ll | 3 -
.../lit/lit/ExampleTests/LLVM.InTree/test/lit.cfg | 2 +-
.../ExampleTests/LLVM.OutOfTree/src/test/lit.cfg | 2 +-
utils/lit/lit/ExampleTests/lit.cfg | 2 +-
utils/lit/lit/ExampleTests/vg-fail.c | 4 +
utils/lit/lit/ExampleTests/xfail-feature.c | 4 +
utils/lit/lit/LitConfig.py | 3 -
utils/lit/lit/TestRunner.py | 34 +-
utils/lit/lit/TestingConfig.py | 10 +-
utils/lit/lit/Util.py | 2 +-
utils/lldbDataFormatters.py | 24 +-
utils/llvm-lit/llvm-lit.in | 13 +-
utils/llvm.grm | 1 -
utils/unittest/googletest/gtest-port.cc | 4 +
.../googletest/include/gtest/internal/gtest-port.h | 2 +-
utils/vim/llvm.vim | 3 +-
utils/yaml2obj/yaml2obj.cpp | 2 +-
2007 files changed, 114172 insertions(+), 31549 deletions(-)
create mode 100644 cmake/platforms/Android.cmake
delete mode 100644 docs/CompilerWriterInfo.html
create mode 100644 docs/CompilerWriterInfo.rst
delete mode 100644 docs/DebuggingJITedCode.html
create mode 100644 docs/DebuggingJITedCode.rst
delete mode 100644 docs/ExtendingLLVM.html
create mode 100644 docs/ExtendingLLVM.rst
delete mode 100644 docs/GettingStarted.html
create mode 100644 docs/GettingStarted.rst
delete mode 100644 docs/GoldPlugin.html
create mode 100644 docs/GoldPlugin.rst
delete mode 100644 docs/HowToAddABuilder.html
create mode 100644 docs/HowToAddABuilder.rst
create mode 100644 docs/HowToBuildOnARM.rst
create mode 100644 docs/HowToSetUpLLVMStyleRTTI.rst
delete mode 100644 docs/HowToSubmitABug.html
create mode 100644 docs/HowToSubmitABug.rst
create mode 100755 docs/HowToUseInstrMappings.rst
create mode 100644 docs/MarkedUpDisassembly.rst
create mode 100644 docs/Phabricator.rst
create mode 100644 docs/SphinxQuickstartTemplate.rst
create mode 100644 docs/_themes/llvm-theme/layout.html
create mode 100644 docs/_themes/llvm-theme/static/contents.png
create mode 100644 docs/_themes/llvm-theme/static/llvm-theme.css
create mode 100644 docs/_themes/llvm-theme/static/logo.png
create mode 100644 docs/_themes/llvm-theme/static/navigation.png
create mode 100644 docs/_themes/llvm-theme/theme.conf
delete mode 100644 docs/llvm-theme/layout.html
delete mode 100644 docs/llvm-theme/static/contents.png
delete mode 100644 docs/llvm-theme/static/llvm-theme.css
delete mode 100644 docs/llvm-theme/static/logo.png
delete mode 100644 docs/llvm-theme/static/navigation.png
delete mode 100644 docs/llvm-theme/theme.conf
create mode 100644 include/llvm/ADT/MapVector.h
delete mode 100644 include/llvm/ADT/Trie.h
create mode 100644 include/llvm/AddressingMode.h
create mode 100644 include/llvm/Analysis/DependenceAnalysis.h
delete mode 100644 include/llvm/Analysis/LoopDependenceAnalysis.h
create mode 100644 include/llvm/Analysis/ProfileDataLoader.h
create mode 100644 include/llvm/Analysis/ProfileDataTypes.h
create mode 100644 include/llvm/CodeGen/CommandFlags.h
create mode 100644 include/llvm/CodeGen/MachinePostDominators.h
create mode 100644 include/llvm/CodeGen/ScheduleDAGILP.h
create mode 100644 include/llvm/CodeGen/TargetSchedule.h
create mode 100644 include/llvm/DataLayout.h
delete mode 100644 include/llvm/ExecutionEngine/IntelJITEventsWrapper.h
create mode 100644 include/llvm/ExecutionEngine/ObjectBuffer.h
create mode 100644 include/llvm/ExecutionEngine/ObjectImage.h
create mode 100644 include/llvm/Object/RelocVisitor.h
delete mode 100644 include/llvm/TableGen/TableGenAction.h
delete mode 100644 include/llvm/Target/TargetData.h
delete mode 100644 include/llvm/Target/TargetELFWriterInfo.h
create mode 100644 include/llvm/Target/TargetTransformImpl.h
create mode 100644 include/llvm/TargetTransformInfo.h
create mode 100644 include/llvm/Transforms/Utils/BypassSlowDivision.h
create mode 100644 include/llvm/Transforms/Utils/IntegerDivision.h
create mode 100644 include/llvm/Transforms/Utils/SimplifyLibCalls.h
create mode 100644 lib/Analysis/CostModel.cpp
create mode 100644 lib/Analysis/DependenceAnalysis.cpp
delete mode 100644 lib/Analysis/LoopDependenceAnalysis.cpp
create mode 100644 lib/Analysis/ProfileDataLoader.cpp
create mode 100644 lib/Analysis/ProfileDataLoaderPass.cpp
create mode 100644 lib/CodeGen/MachinePostDominators.cpp
create mode 100644 lib/CodeGen/StackColoring.cpp
create mode 100644 lib/CodeGen/TargetSchedule.cpp
create mode 100644 lib/DebugInfo/DWARFDebugRangeList.cpp
create mode 100644 lib/DebugInfo/DWARFDebugRangeList.h
create mode 100644 lib/ExecutionEngine/IntelJITEvents/IntelJITEventsWrapper.h
create mode 100644 lib/ExecutionEngine/IntelJITEvents/ittnotify_config.h
create mode 100644 lib/ExecutionEngine/IntelJITEvents/ittnotify_types.h
create mode 100644 lib/ExecutionEngine/IntelJITEvents/jitprofiling.c
create mode 100644 lib/ExecutionEngine/IntelJITEvents/jitprofiling.h
delete mode 100644 lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp
delete mode 100644 lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h
delete mode 100644 lib/ExecutionEngine/RuntimeDyld/ObjectImage.h
create mode 100644 lib/ExecutionEngine/RuntimeDyld/ObjectImageCommon.h
delete mode 100644 lib/TableGen/TableGenAction.cpp
delete mode 100644 lib/Target/ARM/ARMELFWriterInfo.cpp
delete mode 100644 lib/Target/ARM/ARMELFWriterInfo.h
create mode 100644 lib/Target/ARM/ARMScheduleSwift.td
create mode 100644 lib/Target/Hexagon/HexagonMachineScheduler.cpp
create mode 100644 lib/Target/Hexagon/HexagonMachineScheduler.h
delete mode 100644 lib/Target/MBlaze/MBlazeELFWriterInfo.cpp
delete mode 100644 lib/Target/MBlaze/MBlazeELFWriterInfo.h
create mode 100644 lib/Target/Mips/MCTargetDesc/MipsDirectObjLower.cpp
create mode 100644 lib/Target/Mips/MCTargetDesc/MipsDirectObjLower.h
create mode 100644 lib/Target/Mips/MipsDSPInstrFormats.td
create mode 100644 lib/Target/Mips/MipsDSPInstrInfo.td
create mode 100644 lib/Target/PowerPC/PPCScheduleE500mc.td
create mode 100644 lib/Target/PowerPC/PPCScheduleE5500.td
delete mode 100644 lib/Target/TargetData.cpp
delete mode 100644 lib/Target/TargetELFWriterInfo.cpp
create mode 100644 lib/Target/TargetTransformImpl.cpp
delete mode 100644 lib/Target/X86/X86ELFWriterInfo.cpp
delete mode 100644 lib/Target/X86/X86ELFWriterInfo.h
create mode 100644 lib/Target/X86/X86InstrTSX.td
delete mode 100644 lib/Target/X86/X86MCInstLower.h
create mode 100644 lib/Transforms/IPO/BarrierNoopPass.cpp
create mode 100644 lib/Transforms/Instrumentation/BlackList.cpp
create mode 100644 lib/Transforms/Instrumentation/BlackList.h
delete mode 100644 lib/Transforms/Instrumentation/FunctionBlackList.cpp
delete mode 100644 lib/Transforms/Instrumentation/FunctionBlackList.h
create mode 100644 lib/Transforms/Scalar/SROA.cpp
create mode 100644 lib/Transforms/Utils/BypassSlowDivision.cpp
create mode 100644 lib/Transforms/Utils/IntegerDivision.cpp
create mode 100644 lib/Transforms/Utils/MetaRenamer.cpp
create mode 100644 lib/Transforms/Utils/SimplifyLibCalls.cpp
create mode 100644 lib/Transforms/Vectorize/LoopVectorize.cpp
create mode 100644 lib/VMCore/AttributesImpl.h
create mode 100644 lib/VMCore/DataLayout.cpp
create mode 100644 lib/VMCore/TargetTransformInfo.cpp
create mode 100644 test/Analysis/BasicAA/noalias-geps.ll
create mode 100644 test/Analysis/BasicAA/phi-speculation.ll
create mode 100644 test/Analysis/CallGraph/do-nothing-intrinsic.ll
create mode 100644 test/Analysis/CostModel/X86/arith.ll
create mode 100644 test/Analysis/CostModel/X86/cast.ll
create mode 100644 test/Analysis/CostModel/X86/cmp.ll
create mode 100644 test/Analysis/CostModel/X86/i32.ll
create mode 100644 test/Analysis/CostModel/X86/insert-extract-at-zero.ll
create mode 100644 test/Analysis/CostModel/X86/lit.local.cfg
create mode 100644 test/Analysis/CostModel/X86/loop_v2.ll
create mode 100644 test/Analysis/CostModel/X86/tiny.ll
create mode 100644 test/Analysis/CostModel/X86/vectorized-loop.ll
create mode 100644 test/Analysis/CostModel/lit.local.cfg
create mode 100644 test/Analysis/CostModel/no_info.ll
create mode 100644 test/Analysis/DependenceAnalysis/Banerjee.ll
create mode 100644 test/Analysis/DependenceAnalysis/Coupled.ll
create mode 100644 test/Analysis/DependenceAnalysis/ExactRDIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/ExactSIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/GCD.ll
create mode 100644 test/Analysis/DependenceAnalysis/Preliminary.ll
create mode 100644 test/Analysis/DependenceAnalysis/Propagating.ll
create mode 100644 test/Analysis/DependenceAnalysis/Separability.ll
create mode 100644 test/Analysis/DependenceAnalysis/StrongSIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/SymbolicRDIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/SymbolicSIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/WeakCrossingSIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/WeakZeroDstSIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/WeakZeroSrcSIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/ZIV.ll
create mode 100644 test/Analysis/DependenceAnalysis/lit.local.cfg
delete mode 100644 test/Analysis/LoopDependenceAnalysis/alias.ll
delete mode 100644 test/Analysis/LoopDependenceAnalysis/lit.local.cfg
delete mode 100644 test/Analysis/LoopDependenceAnalysis/siv-strong.ll
delete mode 100644 test/Analysis/LoopDependenceAnalysis/siv-weak-crossing.ll
delete mode 100644 test/Analysis/LoopDependenceAnalysis/siv-weak-zero.ll
delete mode 100644 test/Analysis/LoopDependenceAnalysis/ziv.ll
create mode 100644 test/Analysis/Profiling/load-branch-weights-ifs.ll
create mode 100644 test/Analysis/Profiling/load-branch-weights-loops.ll
create mode 100644 test/Analysis/Profiling/load-branch-weights-switches.ll
create mode 100644 test/Assembler/global-addrspace-forwardref.ll
create mode 100644 test/Assembler/invalid-fwdref1.ll
create mode 100644 test/Bitcode/function-encoding-rel-operands.ll
create mode 100644 test/CodeGen/ARM/2012-05-04-vmov.ll
create mode 100644 test/CodeGen/ARM/2012-05-10-PreferVMOVtoVDUP32.ll
create mode 100644 test/CodeGen/ARM/2012-08-27-CopyPhysRegCrash.ll
create mode 100644 test/CodeGen/ARM/2012-08-30-select.ll
create mode 100644 test/CodeGen/ARM/2012-09-18-ARMv4ISelBug.ll
create mode 100644 test/CodeGen/ARM/2012-09-25-InlineAsmScalarToVectorConv.ll
create mode 100644 test/CodeGen/ARM/2012-09-25-InlineAsmScalarToVectorConv2.ll
create mode 100644 test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll
create mode 100644 test/CodeGen/ARM/2012-10-04-FixedFrame-vs-byval.ll
create mode 100644 test/CodeGen/ARM/2012-10-04-LDRB_POST_IMM-Crash.ll
create mode 100644 test/CodeGen/ARM/2012-10-18-PR14099-ByvalFrameAddress.ll
create mode 100644 test/CodeGen/ARM/a15-mla.ll
create mode 100644 test/CodeGen/ARM/a15.ll
create mode 100644 test/CodeGen/ARM/atomicrmw_minmax.ll
create mode 100644 test/CodeGen/ARM/call-noret-minsize.ll
create mode 100644 test/CodeGen/ARM/call-noret.ll
create mode 100644 test/CodeGen/ARM/crash-shufflevector.ll
create mode 100644 test/CodeGen/ARM/darwin-section-order.ll
create mode 100644 test/CodeGen/ARM/deps-fix.ll
create mode 100644 test/CodeGen/ARM/domain-conv-vmovs.ll
create mode 100644 test/CodeGen/ARM/fast-isel-pic.ll
create mode 100644 test/CodeGen/ARM/fp-fast.ll
create mode 100644 test/CodeGen/ARM/ifcvt12.ll
create mode 100644 test/CodeGen/ARM/indirectbr-2.ll
create mode 100644 test/CodeGen/ARM/integer_insertelement.ll
create mode 100644 test/CodeGen/ARM/longMAC.ll
create mode 100644 test/CodeGen/ARM/neon-fma.ll
create mode 100644 test/CodeGen/ARM/unaligned_load_store_vector.ll
create mode 100644 test/CodeGen/ARM/vselect_imax.ll
create mode 100644 test/CodeGen/Generic/MachineBranchProb.ll
create mode 100644 test/CodeGen/Hexagon/remove_lsr.ll
create mode 100644 test/CodeGen/MSP430/fp.ll
create mode 100644 test/CodeGen/Mips/alloca16.ll
create mode 100644 test/CodeGen/Mips/atomicops.ll
create mode 100644 test/CodeGen/Mips/brconeq.ll
create mode 100644 test/CodeGen/Mips/brconeqk.ll
create mode 100644 test/CodeGen/Mips/brconeqz.ll
create mode 100644 test/CodeGen/Mips/brconge.ll
create mode 100644 test/CodeGen/Mips/brcongt.ll
create mode 100644 test/CodeGen/Mips/brconle.ll
create mode 100644 test/CodeGen/Mips/brconlt.ll
create mode 100644 test/CodeGen/Mips/brconne.ll
create mode 100644 test/CodeGen/Mips/brconnek.ll
create mode 100644 test/CodeGen/Mips/brconnez.ll
create mode 100644 test/CodeGen/Mips/brind.ll
create mode 100644 test/CodeGen/Mips/check-noat.ll
create mode 100644 test/CodeGen/Mips/div.ll
create mode 100644 test/CodeGen/Mips/div_rem.ll
create mode 100644 test/CodeGen/Mips/divu.ll
create mode 100644 test/CodeGen/Mips/divu_remu.ll
create mode 100644 test/CodeGen/Mips/dsp-r1.ll
create mode 100644 test/CodeGen/Mips/dsp-r2.ll
create mode 100644 test/CodeGen/Mips/eh-dwarf-cfa.ll
create mode 100644 test/CodeGen/Mips/i32k.ll
create mode 100644 test/CodeGen/Mips/init-array.ll
create mode 100644 test/CodeGen/Mips/llcarry.ll
create mode 100644 test/CodeGen/Mips/mips64-sret.ll
create mode 100644 test/CodeGen/Mips/misha.ll
create mode 100644 test/CodeGen/Mips/mul.ll
create mode 100644 test/CodeGen/Mips/mulll.ll
create mode 100644 test/CodeGen/Mips/mulull.ll
create mode 100644 test/CodeGen/Mips/rem.ll
create mode 100644 test/CodeGen/Mips/remat-immed-load.ll
create mode 100644 test/CodeGen/Mips/remu.ll
create mode 100644 test/CodeGen/Mips/return-vector.ll
create mode 100644 test/CodeGen/Mips/selpat.ll
create mode 100644 test/CodeGen/Mips/seteq.ll
create mode 100644 test/CodeGen/Mips/seteqz.ll
create mode 100644 test/CodeGen/Mips/setge.ll
create mode 100644 test/CodeGen/Mips/setgek.ll
create mode 100644 test/CodeGen/Mips/setle.ll
create mode 100644 test/CodeGen/Mips/setlt.ll
create mode 100644 test/CodeGen/Mips/setltk.ll
create mode 100644 test/CodeGen/Mips/setne.ll
create mode 100644 test/CodeGen/Mips/setuge.ll
create mode 100644 test/CodeGen/Mips/setugt.ll
create mode 100644 test/CodeGen/Mips/setule.ll
create mode 100644 test/CodeGen/Mips/setult.ll
create mode 100644 test/CodeGen/Mips/setultk.ll
create mode 100644 test/CodeGen/Mips/small-section-reserve-gp.ll
create mode 100644 test/CodeGen/Mips/stchar.ll
create mode 100644 test/CodeGen/Mips/stldst.ll
create mode 100644 test/CodeGen/Mips/tailcall.ll
create mode 100644 test/CodeGen/Mips/tls16.ll
create mode 100644 test/CodeGen/Mips/tls16_2.ll
create mode 100644 test/CodeGen/Mips/uitofp.ll
create mode 100644 test/CodeGen/Mips/ul1.ll
create mode 100644 test/CodeGen/Mips/vector-load-store.ll
create mode 100644 test/CodeGen/NVPTX/global-ordering.ll
create mode 100644 test/CodeGen/NVPTX/param-align.ll
create mode 100644 test/CodeGen/NVPTX/pr13291-i1-store.ll
create mode 100644 test/CodeGen/NVPTX/ptx-version-30.ll
create mode 100644 test/CodeGen/NVPTX/ptx-version-31.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-10.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-11.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-12.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-13.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-20.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-21.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-30.ll
create mode 100644 test/CodeGen/NVPTX/sm-version-35.ll
create mode 100644 test/CodeGen/PowerPC/2012-09-16-TOC-entry-check.ll
create mode 100644 test/CodeGen/PowerPC/2012-10-11-dynalloc.ll
create mode 100644 test/CodeGen/PowerPC/2012-10-12-bitcast.ll
create mode 100644 test/CodeGen/PowerPC/asm-Zy.ll
delete mode 100644 test/CodeGen/PowerPC/bl8_elf_nop.ll
create mode 100644 test/CodeGen/PowerPC/cr1eq-no-extra-moves.ll
create mode 100644 test/CodeGen/PowerPC/crsave.ll
create mode 100644 test/CodeGen/PowerPC/emptystruct.ll
create mode 100644 test/CodeGen/PowerPC/floatPSA.ll
create mode 100644 test/CodeGen/PowerPC/fsl-e500mc.ll
create mode 100644 test/CodeGen/PowerPC/fsl-e5500.ll
create mode 100644 test/CodeGen/PowerPC/i64_fp_round.ll
create mode 100644 test/CodeGen/PowerPC/jaggedstructs.ll
create mode 100644 test/CodeGen/PowerPC/misched.ll
create mode 100644 test/CodeGen/PowerPC/novrsave.ll
create mode 100644 test/CodeGen/PowerPC/ppc64-abi-extend.ll
create mode 100644 test/CodeGen/PowerPC/ppc64-align-long-double.ll
create mode 100644 test/CodeGen/PowerPC/ppc64-calls.ll
delete mode 100644 test/CodeGen/PowerPC/ppc64-ind-call.ll
create mode 100644 test/CodeGen/PowerPC/ppc64-toc.ll
create mode 100644 test/CodeGen/PowerPC/ppc64-zext.ll
create mode 100644 test/CodeGen/PowerPC/pr12757.ll
create mode 100644 test/CodeGen/PowerPC/pr13641.ll
create mode 100644 test/CodeGen/PowerPC/pr13891.ll
create mode 100644 test/CodeGen/PowerPC/remat-imm.ll
create mode 100644 test/CodeGen/PowerPC/structsinmem.ll
create mode 100644 test/CodeGen/PowerPC/structsinregs.ll
create mode 100644 test/CodeGen/PowerPC/varargs-struct-float.ll
create mode 100644 test/CodeGen/PowerPC/vec_cmp.ll
create mode 100644 test/CodeGen/PowerPC/vec_conv.ll
create mode 100644 test/CodeGen/PowerPC/vec_extload.ll
create mode 100644 test/CodeGen/PowerPC/vec_sqrt.ll
create mode 100644 test/CodeGen/PowerPC/vrspill.ll
create mode 100644 test/CodeGen/Thumb2/longMACt.ll
create mode 100644 test/CodeGen/X86/2012-08-16-setcc.ll
create mode 100644 test/CodeGen/X86/2012-08-28-UnsafeMathCrash.ll
create mode 100644 test/CodeGen/X86/2012-09-13-dagco-fneg.ll
create mode 100644 test/CodeGen/X86/2012-09-28-CGPBug.ll
create mode 100644 test/CodeGen/X86/2012-10-02-DAGCycle.ll
create mode 100644 test/CodeGen/X86/2012-10-03-DAGCycle.ll
create mode 100644 test/CodeGen/X86/2012-10-18-crash-dagco.ll
create mode 100644 test/CodeGen/X86/MergeConsecutiveStores.ll
create mode 100644 test/CodeGen/X86/StackColoring-dbg.ll
create mode 100644 test/CodeGen/X86/StackColoring.ll
create mode 100644 test/CodeGen/X86/atom-bypass-slow-division.ll
create mode 100644 test/CodeGen/X86/atom-shuf.ll
create mode 100644 test/CodeGen/X86/atomic-minmax-i6432.ll
create mode 100644 test/CodeGen/X86/atomic-pointer.ll
create mode 100644 test/CodeGen/X86/atomic16.ll
create mode 100644 test/CodeGen/X86/atomic32.ll
create mode 100644 test/CodeGen/X86/atomic64.ll
create mode 100644 test/CodeGen/X86/atomic6432.ll
create mode 100644 test/CodeGen/X86/atomic8.ll
create mode 100644 test/CodeGen/X86/avx-intel-ocl.ll
create mode 100644 test/CodeGen/X86/bitcast-i256.ll
create mode 100644 test/CodeGen/X86/buildvec-insertvec.ll
create mode 100644 test/CodeGen/X86/cmov-fp.ll
create mode 100644 test/CodeGen/X86/cvtv2f32.ll
create mode 100644 test/CodeGen/X86/early-ifcvt-crash.ll
create mode 100644 test/CodeGen/X86/extract-concat.ll
create mode 100644 test/CodeGen/X86/fp-fast.ll
create mode 100644 test/CodeGen/X86/fp-load-trunc.ll
create mode 100644 test/CodeGen/X86/handle-move.ll
create mode 100644 test/CodeGen/X86/inlineasm-sched-bug.ll
create mode 100644 test/CodeGen/X86/misched-balance.ll
create mode 100644 test/CodeGen/X86/misched-ilp.ll
create mode 100644 test/CodeGen/X86/ms-inline-asm.ll
create mode 100644 test/CodeGen/X86/mulx32.ll
create mode 100644 test/CodeGen/X86/mulx64.ll
create mode 100644 test/CodeGen/X86/pmovext.ll
create mode 100644 test/CodeGen/X86/pr11985.ll
create mode 100644 test/CodeGen/X86/pr12312.ll
create mode 100644 test/CodeGen/X86/pr12359.ll
create mode 100644 test/CodeGen/X86/pr13458.ll
create mode 100644 test/CodeGen/X86/pr13859.ll
create mode 100644 test/CodeGen/X86/pr13899.ll
create mode 100644 test/CodeGen/X86/pr14088.ll
create mode 100644 test/CodeGen/X86/pr14090.ll
create mode 100644 test/CodeGen/X86/pr14098.ll
create mode 100644 test/CodeGen/X86/pr14161.ll
create mode 100644 test/CodeGen/X86/pr14204.ll
create mode 100644 test/CodeGen/X86/pr14314.ll
create mode 100644 test/CodeGen/X86/pr14333.ll
create mode 100644 test/CodeGen/X86/pr5145.ll
create mode 100644 test/CodeGen/X86/rtm.ll
create mode 100644 test/CodeGen/X86/select_const.ll
create mode 100644 test/CodeGen/X86/shift-bmi2.ll
create mode 100644 test/CodeGen/X86/sjlj.ll
create mode 100644 test/CodeGen/X86/sse-intel-ocl.ll
create mode 100644 test/CodeGen/X86/sse_partial_update.ll
create mode 100644 test/CodeGen/X86/vec_fabs.ll
create mode 100644 test/CodeGen/X86/vec_floor.ll
create mode 100644 test/CodeGen/X86/xmulo.ll
delete mode 100644 test/DebugInfo/2010-04-13-PubType.ll
create mode 100755 test/DebugInfo/Inputs/dwarfdump-inl-test.elf-x86-64
create mode 100644 test/DebugInfo/X86/2010-04-13-PubType.ll
create mode 100644 test/DebugInfo/X86/DW_AT_object_pointer.ll
create mode 100644 test/DebugInfo/X86/elf-names.ll
create mode 100644 test/DebugInfo/X86/linkage-name.ll
delete mode 100644 test/DebugInfo/X86/pr13303.ll
create mode 100644 test/DebugInfo/X86/prologue-stack.ll
create mode 100644 test/DebugInfo/dwarfdump-inlining.test
create mode 100644 test/ExecutionEngine/MCJIT/pr13727.ll
create mode 100644 test/ExecutionEngine/MCJIT/test-common-symbols-alignment.ll
create mode 100644 test/ExecutionEngine/MCJIT/test-data-align.ll
create mode 100644 test/ExecutionEngine/MCJIT/test-ptr-reloc.ll
create mode 100644 test/Feature/minsize_attr.ll
create mode 100644 test/Instrumentation/AddressSanitizer/do-not-instrument-internal-globals.ll
create mode 100644 test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll
create mode 100644 test/MC/ARM/arm-shift-encoding.s
create mode 100644 test/MC/ARM/elf-jump24-fixup.s
create mode 100644 test/MC/ARM/thumb-shift-encoding.s
create mode 100644 test/MC/ARM/thumb2-b.w-encodingT4.s
create mode 100644 test/MC/AsmParser/bad-macro.s
create mode 100644 test/MC/AsmParser/macros-darwin.s
create mode 100644 test/MC/COFF/comm.ll
delete mode 100644 test/MC/COFF/global_ctors.ll
create mode 100644 test/MC/COFF/global_ctors_dtors.ll
create mode 100644 test/MC/Disassembler/ARM/invalid-VLD1LNd32_UPD-thumb.txt
create mode 100644 test/MC/Disassembler/ARM/invalid-VLD4DUPd32_UPD-thumb.txt
create mode 100644 test/MC/Disassembler/ARM/invalid-VLD4LNd32_UPD-thumb.txt
create mode 100644 test/MC/Disassembler/ARM/invalid-VST1LNd32_UPD-thumb.txt
create mode 100644 test/MC/Disassembler/ARM/invalid-VST4LNd32_UPD-thumb.txt
create mode 100644 test/MC/Disassembler/ARM/marked-up-thumb.txt
create mode 100644 test/MC/Disassembler/ARM/neont-VLD-reencoding.txt
create mode 100644 test/MC/Disassembler/ARM/neont-VST-reencoding.txt
create mode 100644 test/MC/Disassembler/X86/marked-up.txt
create mode 100644 test/MC/ELF/cfi-reg.s
create mode 100644 test/MC/ELF/lcomm.s
create mode 100644 test/MC/MachO/ARM/long-call-branch-island-relocation.s
create mode 100644 test/MC/MachO/absolute.s
create mode 100644 test/MC/MachO/gen-dwarf-cpp.s
create mode 100644 test/MC/MachO/gen-dwarf-macro-cpp.s
create mode 100644 test/MC/MachO/i386-large-relocations.s
create mode 100644 test/MC/MachO/x86-data-in-code.ll
create mode 100644 test/MC/Markup/basic-markup.mc
create mode 100644 test/MC/Markup/lit.local.cfg
create mode 100644 test/MC/Mips/do_switch.ll
create mode 100644 test/MC/Mips/mips-alu-instructions.s
create mode 100644 test/MC/Mips/mips-coprocessor-encodings.s
create mode 100644 test/MC/Mips/mips-expansions.s
create mode 100644 test/MC/Mips/mips-fpu-instructions.s
create mode 100644 test/MC/Mips/mips-jump-instructions.s
create mode 100644 test/MC/Mips/mips-memory-instructions.s
create mode 100644 test/MC/Mips/mips-register-names.s
create mode 100644 test/MC/Mips/mips-relocations.s
create mode 100644 test/MC/Mips/mips64-register-names.s
create mode 100644 test/MC/Mips/mips64extins.ll
create mode 100644 test/MC/Mips/mips_directives.s
create mode 100644 test/MC/PowerPC/lit.local.cfg
create mode 100644 test/MC/PowerPC/ppc64-initial-cfa.ll
create mode 100644 test/MC/PowerPC/ppc64-relocs-01.ll
create mode 100644 test/MC/PowerPC/ppc64-tls-relocs-01.ll
create mode 100644 test/MC/X86/x86-32-ms-inline-asm.s
create mode 100644 test/MC/X86/x86_64-rtm-encoding.s
create mode 100644 test/MC/X86/x86_nop.s
create mode 100644 test/Object/Inputs/dext-test.elf-mips64r2
create mode 100644 test/Object/Inputs/relocations.elf-x86-64
create mode 100644 test/Object/Mips/feature.test
create mode 100644 test/Object/Mips/lit.local.cfg
create mode 100644 test/Other/FileCheck-space.txt
create mode 100644 test/Other/Inputs/llvm-cov.gcda
create mode 100644 test/Other/Inputs/llvm-cov.gcno
create mode 100644 test/Other/ResponseFile.ll
create mode 100644 test/Other/extract-alias.ll
create mode 100644 test/Other/extract-weak-odr.ll
create mode 100644 test/Other/link-opts.ll
create mode 100644 test/Other/llvm-cov.test
create mode 100644 test/Other/llvm-nm-without-aliases.ll
create mode 100644 test/Other/spir_cc.ll
create mode 100644 test/TableGen/list-element-bitref.td
create mode 100644 test/TableGen/pr8330.td
create mode 100644 test/Transforms/BBVectorize/X86/cmp-types.ll
create mode 100644 test/Transforms/BBVectorize/X86/loop1.ll
create mode 100644 test/Transforms/BBVectorize/X86/sh-rec.ll
create mode 100644 test/Transforms/BBVectorize/X86/sh-rec2.ll
create mode 100644 test/Transforms/BBVectorize/X86/sh-rec3.ll
create mode 100644 test/Transforms/BBVectorize/X86/sh-types.ll
create mode 100644 test/Transforms/BBVectorize/X86/simple-ldstr.ll
create mode 100644 test/Transforms/BBVectorize/X86/simple.ll
create mode 100644 test/Transforms/BBVectorize/X86/vs-cast.ll
create mode 100644 test/Transforms/DeadArgElim/dbginfo.ll
create mode 100644 test/Transforms/DeadStoreElimination/libcalls.ll
create mode 100644 test/Transforms/EarlyCSE/commute.ll
create mode 100644 test/Transforms/GVN/malloc-load-removal.ll
create mode 100644 test/Transforms/GVN/pr14166.ll
create mode 100644 test/Transforms/GlobalOpt/blockaddress.ll
create mode 100644 test/Transforms/GlobalOpt/tls.ll
create mode 100644 test/Transforms/IndVarSimplify/2012-10-19-congruent-constant.ll
create mode 100644 test/Transforms/IndVarSimplify/verify-scev.ll
create mode 100644 test/Transforms/Inline/recursive.ll
create mode 100644 test/Transforms/InstCombine/2012-08-28-udiv_ashl.ll
create mode 100644 test/Transforms/InstCombine/2012-09-17-ZeroSizedAlloca.ll
create mode 100644 test/Transforms/InstCombine/2012-09-24-MemcpyFromGlobalCrash.ll
create mode 100644 test/Transforms/InstCombine/2012-10-25-vector-of-pointers.ll
create mode 100644 test/Transforms/InstCombine/disable-simplify-libcalls.ll
create mode 100644 test/Transforms/InstCombine/memcmp-1.ll
create mode 100644 test/Transforms/InstCombine/memcmp-2.ll
create mode 100644 test/Transforms/InstCombine/memcpy-1.ll
create mode 100644 test/Transforms/InstCombine/memcpy-2.ll
create mode 100644 test/Transforms/InstCombine/memcpy-from-global.ll
create mode 100644 test/Transforms/InstCombine/memcpy_chk-1.ll
create mode 100644 test/Transforms/InstCombine/memcpy_chk-2.ll
create mode 100644 test/Transforms/InstCombine/memmove-1.ll
create mode 100644 test/Transforms/InstCombine/memmove-2.ll
create mode 100644 test/Transforms/InstCombine/memmove_chk-1.ll
create mode 100644 test/Transforms/InstCombine/memmove_chk-2.ll
create mode 100644 test/Transforms/InstCombine/memset-1.ll
create mode 100644 test/Transforms/InstCombine/memset-2.ll
create mode 100644 test/Transforms/InstCombine/memset_chk-1.ll
create mode 100644 test/Transforms/InstCombine/memset_chk-2.ll
delete mode 100644 test/Transforms/InstCombine/memset_chk.ll
create mode 100644 test/Transforms/InstCombine/obfuscated_splat.ll
create mode 100644 test/Transforms/InstCombine/stpcpy-1.ll
create mode 100644 test/Transforms/InstCombine/stpcpy-2.ll
create mode 100644 test/Transforms/InstCombine/stpcpy_chk-1.ll
create mode 100644 test/Transforms/InstCombine/stpcpy_chk-2.ll
create mode 100644 test/Transforms/InstCombine/strcat-1.ll
create mode 100644 test/Transforms/InstCombine/strcat-2.ll
create mode 100644 test/Transforms/InstCombine/strcat-3.ll
create mode 100644 test/Transforms/InstCombine/strchr-1.ll
create mode 100644 test/Transforms/InstCombine/strchr-2.ll
create mode 100644 test/Transforms/InstCombine/strcmp-1.ll
create mode 100644 test/Transforms/InstCombine/strcmp-2.ll
create mode 100644 test/Transforms/InstCombine/strcpy-1.ll
create mode 100644 test/Transforms/InstCombine/strcpy-2.ll
create mode 100644 test/Transforms/InstCombine/strcpy_chk-1.ll
create mode 100644 test/Transforms/InstCombine/strcpy_chk-2.ll
delete mode 100644 test/Transforms/InstCombine/strcpy_chk.ll
create mode 100644 test/Transforms/InstCombine/strcspn-1.ll
create mode 100644 test/Transforms/InstCombine/strcspn-2.ll
create mode 100644 test/Transforms/InstCombine/strlen-1.ll
create mode 100644 test/Transforms/InstCombine/strlen-2.ll
create mode 100644 test/Transforms/InstCombine/strncat-1.ll
create mode 100644 test/Transforms/InstCombine/strncat-2.ll
create mode 100644 test/Transforms/InstCombine/strncat-3.ll
create mode 100644 test/Transforms/InstCombine/strncmp-1.ll
create mode 100644 test/Transforms/InstCombine/strncmp-2.ll
create mode 100644 test/Transforms/InstCombine/strncpy-1.ll
create mode 100644 test/Transforms/InstCombine/strncpy-2.ll
create mode 100644 test/Transforms/InstCombine/strncpy_chk-1.ll
create mode 100644 test/Transforms/InstCombine/strncpy_chk-2.ll
create mode 100644 test/Transforms/InstCombine/strpbrk-1.ll
create mode 100644 test/Transforms/InstCombine/strpbrk-2.ll
create mode 100644 test/Transforms/InstCombine/strrchr-1.ll
create mode 100644 test/Transforms/InstCombine/strrchr-2.ll
create mode 100644 test/Transforms/InstCombine/strspn-1.ll
create mode 100644 test/Transforms/InstCombine/strstr-1.ll
create mode 100644 test/Transforms/InstCombine/strstr-2.ll
create mode 100644 test/Transforms/InstCombine/strto-1.ll
create mode 100644 test/Transforms/InstCombine/struct-assign-tbaa.ll
create mode 100644 test/Transforms/InstCombine/vector_gep2.ll
create mode 100644 test/Transforms/InstCombine/weak-symbols.ll
create mode 100644 test/Transforms/LoopIdiom/crash.ll
create mode 100644 test/Transforms/LoopIdiom/non-canonical-loop.ll
create mode 100644 test/Transforms/LoopIdiom/scev-invalidation.ll
create mode 100644 test/Transforms/LoopRotate/multiple-exits.ll
create mode 100644 test/Transforms/LoopUnroll/pr14167.ll
create mode 100644 test/Transforms/LoopVectorize/2012-10-20-infloop.ll
create mode 100644 test/Transforms/LoopVectorize/2012-10-22-isconsec.ll
create mode 100644 test/Transforms/LoopVectorize/X86/avx1.ll
create mode 100644 test/Transforms/LoopVectorize/X86/conversion-cost.ll
create mode 100644 test/Transforms/LoopVectorize/X86/cost-model.ll
create mode 100644 test/Transforms/LoopVectorize/X86/gcc-examples.ll
create mode 100644 test/Transforms/LoopVectorize/X86/lit.local.cfg
create mode 100644 test/Transforms/LoopVectorize/cpp-new-array.ll
create mode 100644 test/Transforms/LoopVectorize/flags.ll
create mode 100644 test/Transforms/LoopVectorize/gcc-examples.ll
create mode 100644 test/Transforms/LoopVectorize/increment.ll
create mode 100644 test/Transforms/LoopVectorize/induction_plus.ll
create mode 100644 test/Transforms/LoopVectorize/lit.local.cfg
create mode 100644 test/Transforms/LoopVectorize/non-const-n.ll
create mode 100644 test/Transforms/LoopVectorize/read-only.ll
create mode 100644 test/Transforms/LoopVectorize/reduction.ll
create mode 100644 test/Transforms/LoopVectorize/runtime-check.ll
create mode 100644 test/Transforms/LoopVectorize/scalar-select.ll
create mode 100644 test/Transforms/LoopVectorize/small-loop.ll
create mode 100644 test/Transforms/LoopVectorize/start-non-zero.ll
create mode 100644 test/Transforms/LoopVectorize/write-only.ll
create mode 100644 test/Transforms/MetaRenamer/lit.local.cfg
create mode 100644 test/Transforms/MetaRenamer/metarenamer.ll
create mode 100644 test/Transforms/ObjCARC/path-overflow.ll
create mode 100644 test/Transforms/PhaseOrdering/gdce.ll
create mode 100644 test/Transforms/SROA/alignment.ll
create mode 100644 test/Transforms/SROA/basictest.ll
create mode 100644 test/Transforms/SROA/big-endian.ll
create mode 100644 test/Transforms/SROA/fca.ll
create mode 100644 test/Transforms/SROA/lit.local.cfg
create mode 100644 test/Transforms/SROA/phi-and-select.ll
create mode 100644 test/Transforms/SROA/vector-promotion.ll
delete mode 100644 test/Transforms/ScalarRepl/memcpy-from-global.ll
create mode 100644 test/Transforms/SimplifyCFG/SPARC/lit.local.cfg
create mode 100644 test/Transforms/SimplifyCFG/SPARC/switch_to_lookup_table.ll
create mode 100644 test/Transforms/SimplifyCFG/X86/lit.local.cfg
create mode 100644 test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll
create mode 100644 test/Transforms/SimplifyCFG/preserve-branchweights-partial.ll
create mode 100644 test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll
create mode 100644 test/Transforms/SimplifyCFG/sink-common-code.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/2009-02-12-StrTo.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StpCpy.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrCat.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrChr.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrCmp.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrCpy.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrLen.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrNCat.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrNCmp.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrNCpy.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrPBrk.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrRChr.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrSpn.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/StrStr.ll
create mode 100644 test/Transforms/SimplifyLibCalls/double-float-shrink.ll
create mode 100644 test/Transforms/SimplifyLibCalls/float-shrink-compare.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/memcmp.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/memmove.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/memset-64.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/memset.ll
delete mode 100644 test/Transforms/SimplifyLibCalls/weak-symbols.ll
create mode 100644 tools/lli/RecordingMemoryManager.cpp
create mode 100644 tools/lli/RecordingMemoryManager.h
create mode 100644 tools/lli/RemoteTarget.cpp
create mode 100644 tools/lli/RemoteTarget.h
create mode 100644 tools/llvm-mcmarkup/CMakeLists.txt
create mode 100644 tools/llvm-mcmarkup/LLVMBuild.txt
create mode 100644 tools/llvm-mcmarkup/Makefile
create mode 100644 tools/llvm-mcmarkup/llvm-mcmarkup.cpp
create mode 100644 unittests/ADT/ImmutableMapTest.cpp
create mode 100644 unittests/ExecutionEngine/MCJIT/CMakeLists.txt
create mode 100644 unittests/ExecutionEngine/MCJIT/MCJITTest.cpp
create mode 100644 unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
create mode 100644 unittests/ExecutionEngine/MCJIT/MCJITTests.def
create mode 100644 unittests/ExecutionEngine/MCJIT/Makefile
create mode 100644 unittests/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
create mode 100644 unittests/ExecutionEngine/MCJIT/SectionMemoryManager.h
create mode 100644 unittests/Support/MemoryBufferTest.cpp
create mode 100644 unittests/Support/MemoryTest.cpp
create mode 100644 unittests/Support/formatted_raw_ostream_test.cpp
create mode 100644 unittests/Transforms/Utils/IntegerDivision.cpp
create mode 100644 utils/TableGen/CodeGenMapTable.cpp
delete mode 100644 utils/lit/lit/ExampleTests/LLVM.InTree/test/Bar/bar-test.ll
create mode 100644 utils/lit/lit/ExampleTests/vg-fail.c
create mode 100644 utils/lit/lit/ExampleTests/xfail-feature.c
diff --git a/.gitignore b/.gitignore
index ecf2e3e422b8..24628309dca4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@
*.pyc
# vim swap files
.*.swp
+.sw?
#==============================================================================#
# Explicit files to ignore (only matches one).
@@ -27,6 +28,7 @@ cscope.files
cscope.out
autoconf/aclocal.m4
autoconf/autom4te.cache
+compile_commands.json
#==============================================================================#
# Directories to ignore (do not add trailing '/'s, they skip symlinks).
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fbf8e2bb90e5..d3edc0219858 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -115,6 +115,11 @@ if(LLVM_ENABLE_TIMESTAMPS)
set(ENABLE_TIMESTAMPS 1)
endif()
+option(LLVM_ENABLE_BACKTRACES "Enable embedding backtraces on crash." ON)
+if(LLVM_ENABLE_BACKTRACES)
+ set(ENABLE_BACKTRACES 1)
+endif()
+
option(LLVM_ENABLE_FFI "Use libffi to call external functions from the interpreter" OFF)
set(FFI_LIBRARY_DIR "" CACHE PATH "Additional directory, where CMake should search for libffi.so")
set(FFI_INCLUDE_DIR "" CACHE PATH "Additional directory, where CMake should search for ffi.h or ffi/ffi.h")
@@ -172,23 +177,7 @@ option(LLVM_USE_INTEL_JITEVENTS
if( LLVM_USE_INTEL_JITEVENTS )
# Verify we are on a supported platform
- if( CMAKE_SYSTEM_NAME MATCHES "Windows" OR CMAKE_SYSTEM_NAME MATCHES "Linux" )
- # Directory where Intel Parallel Amplifier XE 2011 is installed.
- if ( WIN32 )
- set(LLVM_INTEL_JITEVENTS_DIR $ENV{VTUNE_AMPLIFIER_XE_2011_DIR})
- else ( WIN32 )
- set(LLVM_INTEL_JITEVENTS_DIR "/opt/intel/vtune_amplifier_xe_2011")
- endif ( WIN32 )
-
- # Set include and library search paths for Intel JIT Events API
- set(LLVM_INTEL_JITEVENTS_INCDIR "${LLVM_INTEL_JITEVENTS_DIR}/include")
-
- if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
- set(LLVM_INTEL_JITEVENTS_LIBDIR "${LLVM_INTEL_JITEVENTS_DIR}/lib64")
- else ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
- set(LLVM_INTEL_JITEVENTS_LIBDIR "${LLVM_INTEL_JITEVENTS_DIR}/lib32")
- endif ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
- else()
+ if( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" AND NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )
message(FATAL_ERROR
"Intel JIT API support is available on Linux and Windows only.")
endif()
@@ -249,6 +238,14 @@ option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)
# BEFORE this include, otherwise options will not be correctly set on
# first cmake run
include(config-ix)
+
+# By default, we target the host, but this can be overridden at CMake
+# invocation time.
+set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}" CACHE STRING
+ "Default target for which LLVM will generate code." )
+set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}" CACHE STRING
+ "Default target for which LLVM will generate code." )
+
include(HandleLLVMOptions)
# Verify that we can find a Python interpreter,
diff --git a/CREDITS.TXT b/CREDITS.TXT
index f090ad734c47..02579182589a 100644
--- a/CREDITS.TXT
+++ b/CREDITS.TXT
@@ -5,8 +5,8 @@ done!
The list is sorted by surname and formatted to allow easy grepping and
beautification by scripts. The fields are: name (N), email (E), web-address
-(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
-(S).
+(W), PGP key ID and fingerprint (P), description (D), snail-mail address
+(S), and (I) IRC handle.
N: Vikram Adve
@@ -17,7 +17,7 @@ D: The Sparc64 backend, provider of much wisdom, and motivator for LLVM
N: Owen Anderson
E: resistor@mac.com
D: LCSSA pass and related LoopUnswitch work
-D: GVNPRE pass, TargetData refactoring, random improvements
+D: GVNPRE pass, DataLayout refactoring, random improvements
N: Henrik Bach
D: MingW Win32 API portability layer
@@ -328,10 +328,6 @@ D: LTO tool, PassManager rewrite, Loop Pass Manager, Loop Rotate
D: GCC PCH Integration (llvm-gcc), llvm-gcc improvements
D: Optimizer improvements, Loop Index Split
-N: Sandeep Patel
-E: deeppatel1987@gmail.com
-D: ARM calling conventions rewrite, hard float support
-
N: Wesley Peck
E: peckw@wesleypeck.com
W: http://wesleypeck.com/
@@ -354,6 +350,11 @@ N: Xerxes Ranby
E: xerxes@zafena.se
D: Cmake dependency chain and various bug fixes
+N: Alex Rosenberg
+E: alexr@leftfield.org
+I: arosenberg
+D: ARM calling conventions rewrite, hard float support
+
N: Chad Rosier
E: mcrosier@apple.com
D: ARM fast-isel improvements
@@ -369,6 +370,7 @@ D: MSIL backend
N: Duncan Sands
E: baldrick@free.fr
+I: baldrick
D: Ada support in llvm-gcc
D: Dragonegg plugin
D: Exception handling improvements
diff --git a/Makefile b/Makefile
index 604696a1df43..1e5dae470d26 100644
--- a/Makefile
+++ b/Makefile
@@ -68,7 +68,8 @@ endif
ifeq ($(MAKECMDGOALS),install-clang)
DIRS := tools/clang/tools/driver tools/clang/lib/Headers \
- tools/clang/tools/libclang tools/clang/tools/c-index-test \
+ tools/clang/tools/libclang \
+ tools/clang/tools/c-index-test \
tools/clang/include/clang-c \
tools/clang/runtime tools/clang/docs \
tools/lto runtime
@@ -111,15 +112,18 @@ cross-compile-build-tools:
cd BuildTools ; \
unset CFLAGS ; \
unset CXXFLAGS ; \
+ unset SDKROOT ; \
+ unset UNIVERSAL_SDK_PATH ; \
$(PROJ_SRC_DIR)/configure --build=$(BUILD_TRIPLE) \
--host=$(BUILD_TRIPLE) --target=$(BUILD_TRIPLE) \
--disable-polly ; \
cd .. ; \
fi; \
- (unset SDKROOT; \
- $(MAKE) -C BuildTools \
+ ($(MAKE) -C BuildTools \
BUILD_DIRS_ONLY=1 \
UNIVERSAL= \
+ UNIVERSAL_SDK_PATH= \
+ SDKROOT= \
TARGET_NATIVE_ARCH="$(TARGET_NATIVE_ARCH)" \
TARGETS_TO_BUILD="$(TARGETS_TO_BUILD)" \
ENABLE_OPTIMIZED=$(ENABLE_OPTIMIZED) \
diff --git a/Makefile.config.in b/Makefile.config.in
index e3bd2a207a50..b4ecea631e3c 100644
--- a/Makefile.config.in
+++ b/Makefile.config.in
@@ -61,6 +61,7 @@ endif
prefix := @prefix@
PROJ_prefix := $(prefix)
+program_prefix := @program_prefix@
PROJ_VERSION := $(LLVMVersion)
else
ifndef PROJ_SRC_ROOT
diff --git a/Makefile.rules b/Makefile.rules
index 289adc2be429..b2b02c25d44b 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -571,7 +571,11 @@ endif
#--------------------------------------------------------------------
ifeq ($(HOST_OS),Darwin)
+ ifdef MACOSX_DEPLOYMENT_TARGET
+ DARWIN_VERSION := $(MACOSX_DEPLOYMENT_TARGET)
+ else
DARWIN_VERSION := `sw_vers -productVersion`
+ endif
# Strip a number like 10.4.7 to 10.4
DARWIN_VERSION := $(shell echo $(DARWIN_VERSION)| sed -E 's/(10.[0-9]).*/\1/')
# Get "4" out of 10.4 for later pieces in the makefile.
@@ -631,19 +635,23 @@ endif
# Adjust linker flags for building an executable
ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
-ifneq ($(HOST_OS), Darwin)
-ifdef TOOLNAME
- LD.Flags += $(RPATH) -Wl,'$$ORIGIN/../lib'
- ifdef EXAMPLE_TOOL
- LD.Flags += $(RPATH) -Wl,$(ExmplDir) $(DynamicFlag)
- else
- LD.Flags += $(RPATH) -Wl,$(ToolDir) $(DynamicFlag)
+ ifneq ($(HOST_OS), Darwin)
+ ifdef TOOLNAME
+ LD.Flags += $(RPATH) -Wl,'$$ORIGIN/../lib'
+ ifdef EXAMPLE_TOOL
+ LD.Flags += $(RPATH) -Wl,$(ExmplDir) $(DynamicFlag)
+ else
+ LD.Flags += $(RPATH) -Wl,$(ToolDir) $(DynamicFlag)
+ endif
endif
-endif
else
-ifneq ($(DARWIN_MAJVERS),4)
- LD.Flags += $(RPATH) -Wl,@executable_path/../lib
-endif
+ ifneq ($(DARWIN_MAJVERS),4)
+ LD.Flags += $(RPATH) -Wl,@executable_path/../lib
+ endif
+ ifeq ($(RC_BUILDIT),YES)
+ TempFile := $(shell mkdir -p ${OBJROOT}/dSYMs ; mktemp ${OBJROOT}/dSYMs/llvm-lto.XXXXXX)
+ LD.Flags += -Wl,-object_path_lto -Wl,$(TempFile)
+ endif
endif
endif
@@ -1524,7 +1532,7 @@ ifneq ($(strip $(ToolAliasBuildPath)),)
$(ToolAliasBuildPath): $(ToolBuildPath)
$(Echo) Creating $(BuildMode) Alias $(TOOLALIAS) $(StripWarnMsg)
$(Verb) $(RM) -f $(ToolAliasBuildPath)
- $(Verb) $(AliasTool) $(TOOLEXENAME) $(ToolAliasBuildPath)
+ $(Verb) $(AliasTool) $(notdir $(ToolBuildPath)) $(ToolAliasBuildPath)
$(Echo) ======= Finished Creating $(BuildMode) Alias $(TOOLALIAS) \
$(StripWarnMsg)
endif
@@ -1541,7 +1549,7 @@ ToolBinDir = $(DESTDIR)$(PROJ_internal_prefix)/bin
else
ToolBinDir = $(DESTDIR)$(PROJ_bindir)
endif
-DestTool = $(ToolBinDir)/$(TOOLEXENAME)
+DestTool = $(ToolBinDir)/$(program_prefix)$(TOOLEXENAME)
install-local:: $(DestTool)
@@ -1556,14 +1564,14 @@ uninstall-local::
# TOOLALIAS install.
ifdef TOOLALIAS
-DestToolAlias = $(ToolBinDir)/$(TOOLALIAS)$(EXEEXT)
+DestToolAlias = $(ToolBinDir)/$(program_prefix)$(TOOLALIAS)$(EXEEXT)
install-local:: $(DestToolAlias)
$(DestToolAlias): $(DestTool)
$(Echo) Installing $(BuildMode) $(DestToolAlias)
$(Verb) $(RM) -f $(DestToolAlias)
- $(Verb) $(AliasTool) $(TOOLEXENAME) $(DestToolAlias)
+ $(Verb) $(AliasTool) $(notdir $(DestTool)) $(DestToolAlias)
uninstall-local::
$(Echo) Uninstalling $(BuildMode) $(DestToolAlias)
diff --git a/autoconf/configure.ac b/autoconf/configure.ac
index 7fa883e9cc50..7715531a338d 100644
--- a/autoconf/configure.ac
+++ b/autoconf/configure.ac
@@ -363,8 +363,8 @@ AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
sparc*-*) llvm_cv_target_arch="Sparc" ;;
powerpc*-*) llvm_cv_target_arch="PowerPC" ;;
arm*-*) llvm_cv_target_arch="ARM" ;;
- mips-*) llvm_cv_target_arch="Mips" ;;
- mipsel-*) llvm_cv_target_arch="Mips" ;;
+ mips-* | mips64-*) llvm_cv_target_arch="Mips" ;;
+ mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;;
xcore-*) llvm_cv_target_arch="XCore" ;;
msp430-*) llvm_cv_target_arch="MSP430" ;;
hexagon-*) llvm_cv_target_arch="Hexagon" ;;
@@ -396,8 +396,8 @@ case $host in
sparc*-*) host_arch="Sparc" ;;
powerpc*-*) host_arch="PowerPC" ;;
arm*-*) host_arch="ARM" ;;
- mips-*) host_arch="Mips" ;;
- mipsel-*) host_arch="Mips" ;;
+ mips-* | mips64-*) host_arch="Mips" ;;
+ mipsel-* | mips64el-*) host_arch="Mips" ;;
xcore-*) host_arch="XCore" ;;
msp430-*) host_arch="MSP430" ;;
hexagon-*) host_arch="Hexagon" ;;
@@ -678,6 +678,21 @@ esac
AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS,
[Define if timestamp information (e.g., __DATE__) is allowed])
+dnl Enable embedding timestamp information into build.
+
+AC_ARG_ENABLE(backtraces,
+ AS_HELP_STRING([--enable-backtraces],
+ [Enable embedding backtraces on crash (default is YES)]),,
+ enableval=default)
+case "$enableval" in
+ yes) AC_SUBST(ENABLE_BACKTRACES,[1]) ;;
+ no) AC_SUBST(ENABLE_BACKTRACES,[0]) ;;
+ default) AC_SUBST(ENABLE_BACKTRACES,[1]) ;;
+ *) AC_MSG_ERROR([Invalid setting for --enable-backtraces. Use "yes" or "no"]) ;;
+esac
+AC_DEFINE_UNQUOTED([ENABLE_BACKTRACES],$ENABLE_BACKTRACES,
+ [Define if you want backtraces on crash])
+
dnl Allow specific targets to be specified for building (or not)
TARGETS_TO_BUILD=""
AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
@@ -699,6 +714,8 @@ case "$enableval" in
arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
mipsel) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
+ mips64) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
+ mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
spu) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
@@ -1275,46 +1292,23 @@ AC_DEFINE_UNQUOTED([LLVM_USE_OPROFILE],$USE_OPROFILE,
dnl Enable support for Intel JIT Events API.
AC_ARG_WITH(intel-jitevents,
- AS_HELP_STRING([--with-intel-jitevents=],
- [Specify location of run-time support library for Intel JIT API (default=/opt/intel/vtune_amplifier_xe_2011)]),
+ AS_HELP_STRING([--with-intel-jitevents Notify Intel JIT profiling API of generated code]),
[
+ case "$withval" in
+ yes) AC_SUBST(USE_INTEL_JITEVENTS,[1]);;
+ no) AC_SUBST(USE_INTEL_JITEVENTS,[0]);;
+ *) AC_MSG_ERROR([Invalid setting for --with-intel-jitevents. Use "yes" or "no"]);;
+ esac
+
case $llvm_cv_os_type in
Linux|Win32|Cygwin|MingW) ;;
- *)
- AC_MSG_ERROR([
- Intel JIT API support is available on Linux and Windows only."]) ;;
+ *) AC_MSG_ERROR([Intel JIT API support is available on Linux and Windows only.]);;
esac
- AC_SUBST(USE_INTEL_JITEVENTS, [1])
case "$llvm_cv_target_arch" in
- x86) llvm_intel_jitevents_archdir="lib32";;
- x86_64) llvm_intel_jitevents_archdir="lib64";;
- *) echo "Target architecture $llvm_cv_target_arch does not support Intel JIT Events API"
- exit -1;;
- esac
- INTEL_JITEVENTS_INCDIR="/opt/intel/vtune_amplifier_xe_2011/include"
- INTEL_JITEVENTS_LIBDIR="/opt/intel/vtune_amplifier_xe_2011/$llvm_intel_jitevents_archdir"
- case "$withval" in
- /* | [[A-Za-z]]:[[\\/]]*) INTEL_JITEVENTS_INCDIR=$withval/include
- INTEL_JITEVENTS_LIBDIR=$withval/$llvm_intel_jitevents_archdir ;;
- *) ;;
+ x86|x86_64) ;;
+ *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);;
esac
-
- AC_SUBST(INTEL_JITEVENTS_INCDIR)
- AC_SUBST(INTEL_JITEVENTS_LIBDIR)
-
- LIBS="$LIBS -L${INTEL_JITEVENTS_LIBDIR}"
- CPPFLAGS="$CPPFLAGS -I$INTEL_JITEVENTS_INCDIR"
-
- AC_SEARCH_LIBS(iJIT_IsProfilingActive, jitprofiling, [], [
- echo "Error! Cannot find libjitprofiling.a. Please check path specified in flag --with-intel-jitevents"
- exit -1
- ])
- AC_CHECK_HEADER([jitprofiling.h], [], [
- echo "Error! Cannot find jitprofiling.h. Please check path specified in flag --with-intel-jitevents"
- exit -1
- ])
-
],
[
AC_SUBST(USE_INTEL_JITEVENTS, [0])
@@ -1717,6 +1711,11 @@ fi
dnl OCaml findlib META file
AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm])
+dnl Add --program-prefix value to Makefile.rules. Already an ARG variable.
+test "x$program_prefix" = "xNONE" && program_prefix=""
+AC_SUBST([program_prefix])
+
+
dnl Do special configuration of Makefiles
AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
AC_CONFIG_MAKEFILE(Makefile)
diff --git a/bindings/ocaml/executionengine/executionengine_ocaml.c b/bindings/ocaml/executionengine/executionengine_ocaml.c
index 5b1e32efefcd..02e030605720 100644
--- a/bindings/ocaml/executionengine/executionengine_ocaml.c
+++ b/bindings/ocaml/executionengine/executionengine_ocaml.c
@@ -75,6 +75,9 @@ static struct custom_operations generic_value_ops = {
custom_hash_default,
custom_serialize_default,
custom_deserialize_default
+#ifdef custom_compare_ext_default
+ , custom_compare_ext_default
+#endif
};
static value alloc_generic_value(LLVMGenericValueRef Ref) {
diff --git a/bindings/ocaml/executionengine/llvm_executionengine.ml b/bindings/ocaml/executionengine/llvm_executionengine.ml
index a8535b246404..ddb53bbb5afd 100644
--- a/bindings/ocaml/executionengine/llvm_executionengine.ml
+++ b/bindings/ocaml/executionengine/llvm_executionengine.ml
@@ -83,7 +83,7 @@ module ExecutionEngine = struct
external free_machine_code: Llvm.llvalue -> t -> unit
= "llvm_ee_free_machine_code"
- external target_data: t -> Llvm_target.TargetData.t
+ external target_data: t -> Llvm_target.DataLayout.t
= "LLVMGetExecutionEngineTargetData"
(* The following are not bound. Patches are welcome.
diff --git a/bindings/ocaml/executionengine/llvm_executionengine.mli b/bindings/ocaml/executionengine/llvm_executionengine.mli
index 166b7bcddca6..0b06078bad86 100644
--- a/bindings/ocaml/executionengine/llvm_executionengine.mli
+++ b/bindings/ocaml/executionengine/llvm_executionengine.mli
@@ -155,7 +155,7 @@ module ExecutionEngine: sig
(** [target_data ee] is the target data owned by the execution engine
[ee]. *)
- val target_data : t -> Llvm_target.TargetData.t
+ val target_data : t -> Llvm_target.DataLayout.t
end
diff --git a/bindings/ocaml/llvm/llvm.mli b/bindings/ocaml/llvm/llvm.mli
index 96448ccd960d..eb6c88355afb 100644
--- a/bindings/ocaml/llvm/llvm.mli
+++ b/bindings/ocaml/llvm/llvm.mli
@@ -375,7 +375,7 @@ val module_context : llmodule -> llcontext
val classify_type : lltype -> TypeKind.t
(** [type_is_sized ty] returns whether the type has a size or not.
- * If it doesn't then it is not safe to call the [TargetData::] methods on it.
+ * If it doesn't then it is not safe to call the [DataLayout::] methods on it.
* *)
val type_is_sized : lltype -> bool
diff --git a/bindings/ocaml/llvm/llvm_ocaml.c b/bindings/ocaml/llvm/llvm_ocaml.c
index a5985d9d2b04..c984bd154cc2 100644
--- a/bindings/ocaml/llvm/llvm_ocaml.c
+++ b/bindings/ocaml/llvm/llvm_ocaml.c
@@ -1277,6 +1277,9 @@ static struct custom_operations builder_ops = {
custom_hash_default,
custom_serialize_default,
custom_deserialize_default
+#ifdef custom_compare_ext_default
+ , custom_compare_ext_default
+#endif
};
static value alloc_builder(LLVMBuilderRef B) {
diff --git a/bindings/ocaml/target/llvm_target.ml b/bindings/ocaml/target/llvm_target.ml
index 49940eec4800..f4891e2b83bd 100644
--- a/bindings/ocaml/target/llvm_target.ml
+++ b/bindings/ocaml/target/llvm_target.ml
@@ -13,7 +13,7 @@ module Endian = struct
| Little
end
-module TargetData = struct
+module DataLayout = struct
type t
external create : string -> t = "llvm_targetdata_create"
@@ -23,20 +23,20 @@ module TargetData = struct
external dispose : t -> unit = "llvm_targetdata_dispose"
end
-external byte_order : TargetData.t -> Endian.t = "llvm_byte_order"
-external pointer_size : TargetData.t -> int = "llvm_pointer_size"
-external intptr_type : TargetData.t -> Llvm.lltype = "LLVMIntPtrType"
-external size_in_bits : TargetData.t -> Llvm.lltype -> Int64.t
+external byte_order : DataLayout.t -> Endian.t = "llvm_byte_order"
+external pointer_size : DataLayout.t -> int = "llvm_pointer_size"
+external intptr_type : DataLayout.t -> Llvm.lltype = "LLVMIntPtrType"
+external size_in_bits : DataLayout.t -> Llvm.lltype -> Int64.t
= "llvm_size_in_bits"
-external store_size : TargetData.t -> Llvm.lltype -> Int64.t = "llvm_store_size"
-external abi_size : TargetData.t -> Llvm.lltype -> Int64.t = "llvm_abi_size"
-external abi_align : TargetData.t -> Llvm.lltype -> int = "llvm_abi_align"
-external stack_align : TargetData.t -> Llvm.lltype -> int = "llvm_stack_align"
-external preferred_align : TargetData.t -> Llvm.lltype -> int
+external store_size : DataLayout.t -> Llvm.lltype -> Int64.t = "llvm_store_size"
+external abi_size : DataLayout.t -> Llvm.lltype -> Int64.t = "llvm_abi_size"
+external abi_align : DataLayout.t -> Llvm.lltype -> int = "llvm_abi_align"
+external stack_align : DataLayout.t -> Llvm.lltype -> int = "llvm_stack_align"
+external preferred_align : DataLayout.t -> Llvm.lltype -> int
= "llvm_preferred_align"
-external preferred_align_of_global : TargetData.t -> Llvm.llvalue -> int
+external preferred_align_of_global : DataLayout.t -> Llvm.llvalue -> int
= "llvm_preferred_align_of_global"
-external element_at_offset : TargetData.t -> Llvm.lltype -> Int64.t -> int
+external element_at_offset : DataLayout.t -> Llvm.lltype -> Int64.t -> int
= "llvm_element_at_offset"
-external offset_of_element : TargetData.t -> Llvm.lltype -> int -> Int64.t
+external offset_of_element : DataLayout.t -> Llvm.lltype -> int -> Int64.t
= "llvm_offset_of_element"
diff --git a/bindings/ocaml/target/llvm_target.mli b/bindings/ocaml/target/llvm_target.mli
index c288b9ac2d9c..ab9c5e49eab8 100644
--- a/bindings/ocaml/target/llvm_target.mli
+++ b/bindings/ocaml/target/llvm_target.mli
@@ -18,11 +18,11 @@ module Endian : sig
| Little
end
-module TargetData : sig
+module DataLayout : sig
type t
- (** [TargetData.create rep] parses the target data string representation [rep].
- See the constructor llvm::TargetData::TargetData. *)
+ (** [DataLayout.create rep] parses the target data string representation [rep].
+ See the constructor llvm::DataLayout::DataLayout. *)
external create : string -> t = "llvm_targetdata_create"
(** [add_target_data td pm] adds the target data [td] to the pass manager [pm].
@@ -32,64 +32,64 @@ module TargetData : sig
= "llvm_targetdata_add"
(** [as_string td] is the string representation of the target data [td].
- See the constructor llvm::TargetData::TargetData. *)
+ See the constructor llvm::DataLayout::DataLayout. *)
external as_string : t -> string = "llvm_targetdata_as_string"
- (** Deallocates a TargetData.
- See the destructor llvm::TargetData::~TargetData. *)
+ (** Deallocates a DataLayout.
+ See the destructor llvm::DataLayout::~DataLayout. *)
external dispose : t -> unit = "llvm_targetdata_dispose"
end
(** Returns the byte order of a target, either LLVMBigEndian or
LLVMLittleEndian.
- See the method llvm::TargetData::isLittleEndian. *)
-external byte_order : TargetData.t -> Endian.t = "llvm_byte_order"
+ See the method llvm::DataLayout::isLittleEndian. *)
+external byte_order : DataLayout.t -> Endian.t = "llvm_byte_order"
(** Returns the pointer size in bytes for a target.
- See the method llvm::TargetData::getPointerSize. *)
-external pointer_size : TargetData.t -> int = "llvm_pointer_size"
+ See the method llvm::DataLayout::getPointerSize. *)
+external pointer_size : DataLayout.t -> int = "llvm_pointer_size"
(** Returns the integer type that is the same size as a pointer on a target.
- See the method llvm::TargetData::getIntPtrType. *)
-external intptr_type : TargetData.t -> Llvm.lltype = "LLVMIntPtrType"
+ See the method llvm::DataLayout::getIntPtrType. *)
+external intptr_type : DataLayout.t -> Llvm.lltype = "LLVMIntPtrType"
(** Computes the size of a type in bytes for a target.
- See the method llvm::TargetData::getTypeSizeInBits. *)
-external size_in_bits : TargetData.t -> Llvm.lltype -> Int64.t
+ See the method llvm::DataLayout::getTypeSizeInBits. *)
+external size_in_bits : DataLayout.t -> Llvm.lltype -> Int64.t
= "llvm_size_in_bits"
(** Computes the storage size of a type in bytes for a target.
- See the method llvm::TargetData::getTypeStoreSize. *)
-external store_size : TargetData.t -> Llvm.lltype -> Int64.t = "llvm_store_size"
+ See the method llvm::DataLayout::getTypeStoreSize. *)
+external store_size : DataLayout.t -> Llvm.lltype -> Int64.t = "llvm_store_size"
(** Computes the ABI size of a type in bytes for a target.
- See the method llvm::TargetData::getTypeAllocSize. *)
-external abi_size : TargetData.t -> Llvm.lltype -> Int64.t = "llvm_abi_size"
+ See the method llvm::DataLayout::getTypeAllocSize. *)
+external abi_size : DataLayout.t -> Llvm.lltype -> Int64.t = "llvm_abi_size"
(** Computes the ABI alignment of a type in bytes for a target.
- See the method llvm::TargetData::getTypeABISize. *)
-external abi_align : TargetData.t -> Llvm.lltype -> int = "llvm_abi_align"
+ See the method llvm::DataLayout::getTypeABISize. *)
+external abi_align : DataLayout.t -> Llvm.lltype -> int = "llvm_abi_align"
(** Computes the call frame alignment of a type in bytes for a target.
- See the method llvm::TargetData::getTypeABISize. *)
-external stack_align : TargetData.t -> Llvm.lltype -> int = "llvm_stack_align"
+ See the method llvm::DataLayout::getTypeABISize. *)
+external stack_align : DataLayout.t -> Llvm.lltype -> int = "llvm_stack_align"
(** Computes the preferred alignment of a type in bytes for a target.
- See the method llvm::TargetData::getTypeABISize. *)
-external preferred_align : TargetData.t -> Llvm.lltype -> int
+ See the method llvm::DataLayout::getTypeABISize. *)
+external preferred_align : DataLayout.t -> Llvm.lltype -> int
= "llvm_preferred_align"
(** Computes the preferred alignment of a global variable in bytes for a target.
- See the method llvm::TargetData::getPreferredAlignment. *)
-external preferred_align_of_global : TargetData.t -> Llvm.llvalue -> int
+ See the method llvm::DataLayout::getPreferredAlignment. *)
+external preferred_align_of_global : DataLayout.t -> Llvm.llvalue -> int
= "llvm_preferred_align_of_global"
(** Computes the structure element that contains the byte offset for a target.
See the method llvm::StructLayout::getElementContainingOffset. *)
-external element_at_offset : TargetData.t -> Llvm.lltype -> Int64.t -> int
+external element_at_offset : DataLayout.t -> Llvm.lltype -> Int64.t -> int
= "llvm_element_at_offset"
(** Computes the byte offset of the indexed struct element for a target.
See the method llvm::StructLayout::getElementContainingOffset. *)
-external offset_of_element : TargetData.t -> Llvm.lltype -> int -> Int64.t
+external offset_of_element : DataLayout.t -> Llvm.lltype -> int -> Int64.t
= "llvm_offset_of_element"
diff --git a/bindings/ocaml/target/target_ocaml.c b/bindings/ocaml/target/target_ocaml.c
index ca01e7786b68..62fe789a52e2 100644
--- a/bindings/ocaml/target/target_ocaml.c
+++ b/bindings/ocaml/target/target_ocaml.c
@@ -18,18 +18,18 @@
#include "llvm-c/Target.h"
#include "caml/alloc.h"
-/* string -> TargetData.t */
+/* string -> DataLayout.t */
CAMLprim LLVMTargetDataRef llvm_targetdata_create(value StringRep) {
return LLVMCreateTargetData(String_val(StringRep));
}
-/* TargetData.t -> [ unit */
+/* DataLayout.t -> [ unit */
CAMLprim value llvm_targetdata_add(LLVMTargetDataRef TD, LLVMPassManagerRef PM){
LLVMAddTargetData(TD, PM);
return Val_unit;
}
-/* TargetData.t -> string */
+/* DataLayout.t -> string */
CAMLprim value llvm_targetdata_as_string(LLVMTargetDataRef TD) {
char *StringRep = LLVMCopyStringRepOfTargetData(TD);
value Copy = copy_string(StringRep);
@@ -37,65 +37,65 @@ CAMLprim value llvm_targetdata_as_string(LLVMTargetDataRef TD) {
return Copy;
}
-/* TargetData.t -> unit */
+/* DataLayout.t -> unit */
CAMLprim value llvm_targetdata_dispose(LLVMTargetDataRef TD) {
LLVMDisposeTargetData(TD);
return Val_unit;
}
-/* TargetData.t -> Endian.t */
+/* DataLayout.t -> Endian.t */
CAMLprim value llvm_byte_order(LLVMTargetDataRef TD) {
return Val_int(LLVMByteOrder(TD));
}
-/* TargetData.t -> int */
+/* DataLayout.t -> int */
CAMLprim value llvm_pointer_size(LLVMTargetDataRef TD) {
return Val_int(LLVMPointerSize(TD));
}
-/* TargetData.t -> Llvm.lltype -> Int64.t */
+/* DataLayout.t -> Llvm.lltype -> Int64.t */
CAMLprim value llvm_size_in_bits(LLVMTargetDataRef TD, LLVMTypeRef Ty) {
return caml_copy_int64(LLVMSizeOfTypeInBits(TD, Ty));
}
-/* TargetData.t -> Llvm.lltype -> Int64.t */
+/* DataLayout.t -> Llvm.lltype -> Int64.t */
CAMLprim value llvm_store_size(LLVMTargetDataRef TD, LLVMTypeRef Ty) {
return caml_copy_int64(LLVMStoreSizeOfType(TD, Ty));
}
-/* TargetData.t -> Llvm.lltype -> Int64.t */
+/* DataLayout.t -> Llvm.lltype -> Int64.t */
CAMLprim value llvm_abi_size(LLVMTargetDataRef TD, LLVMTypeRef Ty) {
return caml_copy_int64(LLVMABISizeOfType(TD, Ty));
}
-/* TargetData.t -> Llvm.lltype -> int */
+/* DataLayout.t -> Llvm.lltype -> int */
CAMLprim value llvm_abi_align(LLVMTargetDataRef TD, LLVMTypeRef Ty) {
return Val_int(LLVMABIAlignmentOfType(TD, Ty));
}
-/* TargetData.t -> Llvm.lltype -> int */
+/* DataLayout.t -> Llvm.lltype -> int */
CAMLprim value llvm_stack_align(LLVMTargetDataRef TD, LLVMTypeRef Ty) {
return Val_int(LLVMCallFrameAlignmentOfType(TD, Ty));
}
-/* TargetData.t -> Llvm.lltype -> int */
+/* DataLayout.t -> Llvm.lltype -> int */
CAMLprim value llvm_preferred_align(LLVMTargetDataRef TD, LLVMTypeRef Ty) {
return Val_int(LLVMPreferredAlignmentOfType(TD, Ty));
}
-/* TargetData.t -> Llvm.llvalue -> int */
+/* DataLayout.t -> Llvm.llvalue -> int */
CAMLprim value llvm_preferred_align_of_global(LLVMTargetDataRef TD,
LLVMValueRef GlobalVar) {
return Val_int(LLVMPreferredAlignmentOfGlobal(TD, GlobalVar));
}
-/* TargetData.t -> Llvm.lltype -> Int64.t -> int */
+/* DataLayout.t -> Llvm.lltype -> Int64.t -> int */
CAMLprim value llvm_element_at_offset(LLVMTargetDataRef TD, LLVMTypeRef Ty,
value Offset) {
return Val_int(LLVMElementAtOffset(TD, Ty, Int_val(Offset)));
}
-/* TargetData.t -> Llvm.lltype -> int -> Int64.t */
+/* DataLayout.t -> Llvm.lltype -> int -> Int64.t */
CAMLprim value llvm_offset_of_element(LLVMTargetDataRef TD, LLVMTypeRef Ty,
value Index) {
return caml_copy_int64(LLVMOffsetOfElement(TD, Ty, Int_val(Index)));
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake
index 25d6211ac6f2..fcd5dd556676 100755
--- a/cmake/config-ix.cmake
+++ b/cmake/config-ix.cmake
@@ -85,13 +85,25 @@ check_include_file(mach-o/dyld.h HAVE_MACH_O_DYLD_H)
# library checks
if( NOT PURE_WINDOWS )
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)
+ if (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(pthread pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
+ else()
+ # this could be Android
+ check_library_exists(c pthread_create "" PTHREAD_IN_LIBC)
+ if (PTHREAD_IN_LIBC)
+ check_library_exists(c pthread_getspecific "" HAVE_PTHREAD_GETSPECIFIC)
+ check_library_exists(c pthread_rwlock_init "" HAVE_PTHREAD_RWLOCK_INIT)
+ check_library_exists(c pthread_mutex_lock "" HAVE_PTHREAD_MUTEX_LOCK)
+ endif()
+ endif()
check_library_exists(dl dlopen "" HAVE_LIBDL)
endif()
# function checks
check_symbol_exists(arc4random "stdlib.h" HAVE_ARC4RANDOM)
+check_symbol_exists(backtrace "execinfo.h" HAVE_BACKTRACE)
check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE)
check_symbol_exists(getrusage sys/resource.h HAVE_GETRUSAGE)
check_symbol_exists(setrlimit sys/resource.h HAVE_SETRLIMIT)
@@ -134,9 +146,6 @@ check_symbol_exists(strchr string.h HAVE_STRCHR)
check_symbol_exists(strcmp string.h HAVE_STRCMP)
check_symbol_exists(strdup string.h HAVE_STRDUP)
check_symbol_exists(strrchr string.h HAVE_STRRCHR)
-if( NOT PURE_WINDOWS )
- check_symbol_exists(pthread_mutex_lock pthread.h HAVE_PTHREAD_MUTEX_LOCK)
-endif()
check_symbol_exists(sbrk unistd.h HAVE_SBRK)
check_symbol_exists(srand48 stdlib.h HAVE_RAND48_SRAND48)
if( HAVE_RAND48_SRAND48 )
@@ -294,9 +303,7 @@ get_host_triple(LLVM_HOST_TRIPLE)
# By default, we target the host, but this can be overridden at CMake
# invocation time.
-set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}")
set(LLVM_HOSTTRIPLE "${LLVM_HOST_TRIPLE}")
-set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}")
# Determine the native architecture.
string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)
@@ -324,6 +331,8 @@ elseif (LLVM_NATIVE_ARCH MATCHES "xcore")
set(LLVM_NATIVE_ARCH XCore)
elseif (LLVM_NATIVE_ARCH MATCHES "msp430")
set(LLVM_NATIVE_ARCH MSP430)
+elseif (LLVM_NATIVE_ARCH MATCHES "hexagon")
+ set(LLVM_NATIVE_ARCH Hexagon)
else ()
message(FATAL_ERROR "Unknown architecture ${LLVM_NATIVE_ARCH}")
endif ()
diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake
index f44a27cce83a..43ee9a08b27f 100755
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -135,16 +135,22 @@ endmacro(add_llvm_target)
# lld, and Polly. This adds two options. One for the source directory of the
# project, which defaults to ${CMAKE_CURRENT_SOURCE_DIR}/${name}. Another to
# enable or disable building it with everthing else.
+# Additional parameter can be specified as the name of directory.
macro(add_llvm_external_project name)
- string(TOUPPER ${name} nameUPPER)
- set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}"
+ set(add_llvm_external_dir "${ARGN}")
+ if("${add_llvm_external_dir}" STREQUAL "")
+ set(add_llvm_external_dir ${name})
+ endif()
+ string(REPLACE "-" "_" nameUNDERSCORE ${name})
+ string(TOUPPER ${nameUNDERSCORE} nameUPPER)
+ set(LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${add_llvm_external_dir}"
CACHE PATH "Path to ${name} source directory")
if (NOT ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} STREQUAL ""
AND EXISTS ${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR}/CMakeLists.txt)
option(LLVM_EXTERNAL_${nameUPPER}_BUILD
"Whether to build ${name} as part of LLVM" ON)
if (LLVM_EXTERNAL_${nameUPPER}_BUILD)
- add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${name})
+ add_subdirectory(${LLVM_EXTERNAL_${nameUPPER}_SOURCE_DIR} ${add_llvm_external_dir})
endif()
endif()
endmacro(add_llvm_external_project)
@@ -278,11 +284,14 @@ endfunction()
function(add_lit_testsuite target comment)
parse_arguments(ARG "PARAMS;DEPENDS;ARGS" "" ${ARGN})
- # Register the testsuites, params and depends for the global check rule.
- set_property(GLOBAL APPEND PROPERTY LLVM_LIT_TESTSUITES ${ARG_DEFAULT_ARGS})
- set_property(GLOBAL APPEND PROPERTY LLVM_LIT_PARAMS ${ARG_PARAMS})
- set_property(GLOBAL APPEND PROPERTY LLVM_LIT_DEPENDS ${ARG_DEPENDS})
- set_property(GLOBAL APPEND PROPERTY LLVM_LIT_EXTRA_ARGS ${ARG_ARGS})
+ # EXCLUDE_FROM_ALL excludes the test ${target} out of check-all.
+ if(NOT EXCLUDE_FROM_ALL)
+ # Register the testsuites, params and depends for the global check rule.
+ set_property(GLOBAL APPEND PROPERTY LLVM_LIT_TESTSUITES ${ARG_DEFAULT_ARGS})
+ set_property(GLOBAL APPEND PROPERTY LLVM_LIT_PARAMS ${ARG_PARAMS})
+ set_property(GLOBAL APPEND PROPERTY LLVM_LIT_DEPENDS ${ARG_DEPENDS})
+ set_property(GLOBAL APPEND PROPERTY LLVM_LIT_EXTRA_ARGS ${ARG_ARGS})
+ endif()
# Produce a specific suffixed check rule.
add_lit_target(${target} ${comment}
diff --git a/cmake/modules/LLVMProcessSources.cmake b/cmake/modules/LLVMProcessSources.cmake
index 0e410edc15fe..2cef6cfc3a30 100644
--- a/cmake/modules/LLVMProcessSources.cmake
+++ b/cmake/modules/LLVMProcessSources.cmake
@@ -48,7 +48,7 @@ function(llvm_process_sources OUT_VAR)
set( f ${CMAKE_CURRENT_SOURCE_DIR}/${s} )
add_file_dependencies( ${f} ${TABLEGEN_OUTPUT} )
endforeach(s)
- if( MSVC_IDE )
+ if( MSVC_IDE OR XCODE )
# This adds .td and .h files to the Visual Studio solution:
# FIXME: Shall we handle *.def here?
add_td_sources(sources)
diff --git a/cmake/platforms/Android.cmake b/cmake/platforms/Android.cmake
new file mode 100644
index 000000000000..72849b16c767
--- /dev/null
+++ b/cmake/platforms/Android.cmake
@@ -0,0 +1,21 @@
+# Toolchain config for Android NDK.
+# This is expected to be used with a standalone Android toolchain (see
+# docs/STANDALONE-TOOLCHAIN.html in the NDK on how to get one).
+#
+# Usage:
+# mkdir build; cd build
+# cmake ..; make
+# mkdir android; cd android
+# cmake -DLLVM_ANDROID_TOOLCHAIN_DIR=/path/to/android/ndk \
+# -DCMAKE_TOOLCHAIN_FILE=../../cmake/platforms/Android.cmake ../..
+# make
+
+SET(CMAKE_SYSTEM_NAME Linux)
+SET(CMAKE_C_COMPILER ${CMAKE_BINARY_DIR}/../bin/clang)
+SET(CMAKE_CXX_COMPILER ${CMAKE_BINARY_DIR}/../bin/clang++)
+SET(ANDROID "1" CACHE STRING "ANDROID" FORCE)
+
+SET(ANDROID_COMMON_FLAGS "-target arm-linux-androideabi --sysroot=${LLVM_ANDROID_TOOLCHAIN_DIR}/sysroot -B${LLVM_ANDROID_TOOLCHAIN_DIR} -mllvm -arm-enable-ehabi")
+SET(CMAKE_C_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_cflags" FORCE)
+SET(CMAKE_CXX_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_cxxflags" FORCE)
+SET(CMAKE_LINK_FLAGS "${ANDROID_COMMON_FLAGS}" CACHE STRING "toolchain_linkflags" FORCE)
diff --git a/configure b/configure
index 6fbc47c72a7e..4fa070549196 100755
--- a/configure
+++ b/configure
@@ -704,6 +704,7 @@ ENABLE_PIC
ENABLE_SHARED
ENABLE_EMBED_STDCXX
ENABLE_TIMESTAMPS
+ENABLE_BACKTRACES
TARGETS_TO_BUILD
LLVM_ENUM_TARGETS
LLVM_ENUM_ASM_PRINTERS
@@ -766,8 +767,6 @@ COVERED_SWITCH_DEFAULT
USE_UDIS86
USE_OPROFILE
USE_INTEL_JITEVENTS
-INTEL_JITEVENTS_INCDIR
-INTEL_JITEVENTS_LIBDIR
XML2CONFIG
LIBXML2_LIBS
LIBXML2_INC
@@ -792,6 +791,7 @@ OCAML_LIBDIR
ENABLE_VISIBILITY_INLINES_HIDDEN
RPATH
RDYNAMIC
+program_prefix
LIBOBJS
LTLIBOBJS'
ac_subst_files=''
@@ -1423,6 +1423,8 @@ Optional Features:
Win32 DLL (default is NO)
--enable-timestamps Enable embedding timestamp information in build
(default is YES)
+ --enable-backtraces Enable embedding backtraces on crash (default is
+ YES)
--enable-targets Build specific host targets: all or
target1,target2,... Valid targets are: host, x86,
x86_64, sparc, powerpc, arm, mips, spu, hexagon,
@@ -1460,10 +1462,8 @@ Optional Packages:
--with-udis86= Use udis86 external x86 disassembler library
--with-oprofile=
Tell OProfile >= 0.9.4 how to symbolize JIT output
- --with-intel-jitevents=
- Specify location of run-time support library for
- Intel JIT API
- (default=/opt/intel/vtune_amplifier_xe_2011)
+ --with-intel-jitevents Notify Intel JIT profiling API of generated code
+
Some influential environment variables:
CC C compiler command
@@ -3904,8 +3904,8 @@ else
sparc*-*) llvm_cv_target_arch="Sparc" ;;
powerpc*-*) llvm_cv_target_arch="PowerPC" ;;
arm*-*) llvm_cv_target_arch="ARM" ;;
- mips-*) llvm_cv_target_arch="Mips" ;;
- mipsel-*) llvm_cv_target_arch="Mips" ;;
+ mips-* | mips64-*) llvm_cv_target_arch="Mips" ;;
+ mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;;
xcore-*) llvm_cv_target_arch="XCore" ;;
msp430-*) llvm_cv_target_arch="MSP430" ;;
hexagon-*) llvm_cv_target_arch="Hexagon" ;;
@@ -3937,8 +3937,8 @@ case $host in
sparc*-*) host_arch="Sparc" ;;
powerpc*-*) host_arch="PowerPC" ;;
arm*-*) host_arch="ARM" ;;
- mips-*) host_arch="Mips" ;;
- mipsel-*) host_arch="Mips" ;;
+ mips-* | mips64-*) host_arch="Mips" ;;
+ mipsel-* | mips64el-*) host_arch="Mips" ;;
xcore-*) host_arch="XCore" ;;
msp430-*) host_arch="MSP430" ;;
hexagon-*) host_arch="Hexagon" ;;
@@ -5382,6 +5382,31 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+
+# Check whether --enable-backtraces was given.
+if test "${enable_backtraces+set}" = set; then
+ enableval=$enable_backtraces;
+else
+ enableval=default
+fi
+
+case "$enableval" in
+ yes) ENABLE_BACKTRACES=1
+ ;;
+ no) ENABLE_BACKTRACES=0
+ ;;
+ default) ENABLE_BACKTRACES=1
+ ;;
+ *) { { echo "$as_me:$LINENO: error: Invalid setting for --enable-backtraces. Use \"yes\" or \"no\"" >&5
+echo "$as_me: error: Invalid setting for --enable-backtraces. Use \"yes\" or \"no\"" >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+
+cat >>confdefs.h <<_ACEOF
+#define ENABLE_BACKTRACES $ENABLE_BACKTRACES
+_ACEOF
+
+
TARGETS_TO_BUILD=""
# Check whether --enable-targets was given.
if test "${enable_targets+set}" = set; then
@@ -5404,6 +5429,8 @@ case "$enableval" in
arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
mipsel) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
+ mips64) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
+ mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
spu) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
@@ -10289,7 +10316,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <&5
+echo "$as_me: error: Invalid setting for --with-intel-jitevents. Use \"yes\" or \"no\"" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+
case $llvm_cv_os_type in
Linux|Win32|Cygwin|MingW) ;;
- *)
- { { echo "$as_me:$LINENO: error:
- Intel JIT API support is available on Linux and Windows only.\"" >&5
-echo "$as_me: error:
- Intel JIT API support is available on Linux and Windows only.\"" >&2;}
- { (exit 1); exit 1; }; } ;;
+ *) { { echo "$as_me:$LINENO: error: Intel JIT API support is available on Linux and Windows only." >&5
+echo "$as_me: error: Intel JIT API support is available on Linux and Windows only." >&2;}
+ { (exit 1); exit 1; }; };;
esac
- USE_INTEL_JITEVENTS=1
-
case "$llvm_cv_target_arch" in
- x86) llvm_intel_jitevents_archdir="lib32";;
- x86_64) llvm_intel_jitevents_archdir="lib64";;
- *) echo "Target architecture $llvm_cv_target_arch does not support Intel JIT Events API"
- exit -1;;
- esac
- INTEL_JITEVENTS_INCDIR="/opt/intel/vtune_amplifier_xe_2011/include"
- INTEL_JITEVENTS_LIBDIR="/opt/intel/vtune_amplifier_xe_2011/$llvm_intel_jitevents_archdir"
- case "$withval" in
- /* | [A-Za-z]:[\\/]*) INTEL_JITEVENTS_INCDIR=$withval/include
- INTEL_JITEVENTS_LIBDIR=$withval/$llvm_intel_jitevents_archdir ;;
- *) ;;
+ x86|x86_64) ;;
+ *) { { echo "$as_me:$LINENO: error: Target architecture $llvm_cv_target_arch does not support Intel JIT Events API." >&5
+echo "$as_me: error: Target architecture $llvm_cv_target_arch does not support Intel JIT Events API." >&2;}
+ { (exit 1); exit 1; }; };;
esac
-
-
-
- LIBS="$LIBS -L${INTEL_JITEVENTS_LIBDIR}"
- CPPFLAGS="$CPPFLAGS -I$INTEL_JITEVENTS_INCDIR"
-
- { echo "$as_me:$LINENO: checking for library containing iJIT_IsProfilingActive" >&5
-echo $ECHO_N "checking for library containing iJIT_IsProfilingActive... $ECHO_C" >&6; }
-if test "${ac_cv_search_iJIT_IsProfilingActive+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* 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 iJIT_IsProfilingActive ();
-int
-main ()
-{
-return iJIT_IsProfilingActive ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' jitprofiling; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- 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
- ac_cv_search_iJIT_IsProfilingActive=$ac_res
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if test "${ac_cv_search_iJIT_IsProfilingActive+set}" = set; then
- break
-fi
-done
-if test "${ac_cv_search_iJIT_IsProfilingActive+set}" = set; then
- :
-else
- ac_cv_search_iJIT_IsProfilingActive=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_search_iJIT_IsProfilingActive" >&5
-echo "${ECHO_T}$ac_cv_search_iJIT_IsProfilingActive" >&6; }
-ac_res=$ac_cv_search_iJIT_IsProfilingActive
-if test "$ac_res" != no; then
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-else
-
- echo "Error! Cannot find libjitprofiling.a. Please check path specified in flag --with-intel-jitevents"
- exit -1
-
-fi
-
- if test "${ac_cv_header_jitprofiling_h+set}" = set; then
- { echo "$as_me:$LINENO: checking for jitprofiling.h" >&5
-echo $ECHO_N "checking for jitprofiling.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_jitprofiling_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_jitprofiling_h" >&5
-echo "${ECHO_T}$ac_cv_header_jitprofiling_h" >&6; }
-else
- # Is the header compilable?
-{ echo "$as_me:$LINENO: checking jitprofiling.h usability" >&5
-echo $ECHO_N "checking jitprofiling.h usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-$ac_includes_default
-#include
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-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_compile") 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_objext'
- { (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
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking jitprofiling.h presence" >&5
-echo $ECHO_N "checking jitprofiling.h presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-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_cpp conftest.$ac_ext") 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); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: jitprofiling.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: jitprofiling.h: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: jitprofiling.h: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: jitprofiling.h: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: jitprofiling.h: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: jitprofiling.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: jitprofiling.h: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: jitprofiling.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: jitprofiling.h: in the future, the compiler will take precedence" >&2;}
- ( cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to http://llvm.org/bugs/ ##
-## ------------------------------------ ##
-_ASBOX
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-{ echo "$as_me:$LINENO: checking for jitprofiling.h" >&5
-echo $ECHO_N "checking for jitprofiling.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_jitprofiling_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_header_jitprofiling_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_jitprofiling_h" >&5
-echo "${ECHO_T}$ac_cv_header_jitprofiling_h" >&6; }
-
-fi
-if test $ac_cv_header_jitprofiling_h = yes; then
- :
-else
-
- echo "Error! Cannot find jitprofiling.h. Please check path specified in flag --with-intel-jitevents"
- exit -1
-
-fi
-
-
-
-
else
USE_INTEL_JITEVENTS=0
@@ -21382,6 +21131,10 @@ fi
ac_config_files="$ac_config_files bindings/ocaml/llvm/META.llvm"
+test "x$program_prefix" = "xNONE" && program_prefix=""
+
+
+
ac_config_commands="$ac_config_commands setup"
ac_config_commands="$ac_config_commands Makefile"
@@ -22219,6 +21972,7 @@ ENABLE_PIC!$ENABLE_PIC$ac_delim
ENABLE_SHARED!$ENABLE_SHARED$ac_delim
ENABLE_EMBED_STDCXX!$ENABLE_EMBED_STDCXX$ac_delim
ENABLE_TIMESTAMPS!$ENABLE_TIMESTAMPS$ac_delim
+ENABLE_BACKTRACES!$ENABLE_BACKTRACES$ac_delim
TARGETS_TO_BUILD!$TARGETS_TO_BUILD$ac_delim
LLVM_ENUM_TARGETS!$LLVM_ENUM_TARGETS$ac_delim
LLVM_ENUM_ASM_PRINTERS!$LLVM_ENUM_ASM_PRINTERS$ac_delim
@@ -22281,8 +22035,6 @@ COVERED_SWITCH_DEFAULT!$COVERED_SWITCH_DEFAULT$ac_delim
USE_UDIS86!$USE_UDIS86$ac_delim
USE_OPROFILE!$USE_OPROFILE$ac_delim
USE_INTEL_JITEVENTS!$USE_INTEL_JITEVENTS$ac_delim
-INTEL_JITEVENTS_INCDIR!$INTEL_JITEVENTS_INCDIR$ac_delim
-INTEL_JITEVENTS_LIBDIR!$INTEL_JITEVENTS_LIBDIR$ac_delim
XML2CONFIG!$XML2CONFIG$ac_delim
LIBXML2_LIBS!$LIBXML2_LIBS$ac_delim
LIBXML2_INC!$LIBXML2_INC$ac_delim
@@ -22307,6 +22059,7 @@ OCAML_LIBDIR!$OCAML_LIBDIR$ac_delim
ENABLE_VISIBILITY_INLINES_HIDDEN!$ENABLE_VISIBILITY_INLINES_HIDDEN$ac_delim
RPATH!$RPATH$ac_delim
RDYNAMIC!$RDYNAMIC$ac_delim
+program_prefix!$program_prefix$ac_delim
LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
diff --git a/docs/AliasAnalysis.rst b/docs/AliasAnalysis.rst
index 2d4f2914ee00..fdaec89cdf6b 100644
--- a/docs/AliasAnalysis.rst
+++ b/docs/AliasAnalysis.rst
@@ -230,7 +230,7 @@ any pass dependencies your pass has. Thus you should have something like this:
.. code-block:: c++
- void getAnalysisUsage(AnalysisUsage &AU) const {
+ void getAnalysisUsage(AnalysisUsage &AU) const {
AliasAnalysis::getAnalysisUsage(AU);
// declare your dependencies here.
}
diff --git a/docs/BitCodeFormat.rst b/docs/BitCodeFormat.rst
index d3995e7036bd..bd26f7b1502e 100644
--- a/docs/BitCodeFormat.rst
+++ b/docs/BitCodeFormat.rst
@@ -489,6 +489,8 @@ The magic number for LLVM IR files is:
When combined with the bitcode magic number and viewed as bytes, this is
``"BC 0xC0DE"``.
+.. _Signed VBRs:
+
Signed VBRs
^^^^^^^^^^^
@@ -507,6 +509,7 @@ As such, signed VBR values of a specific width are emitted as follows:
With this encoding, small positive and small negative values can both be emitted
efficiently. Signed VBR encoding is used in ``CST_CODE_INTEGER`` and
``CST_CODE_WIDE_INTEGER`` records within ``CONSTANTS_BLOCK`` blocks.
+It is also used for phi instruction operands in `MODULE_CODE_VERSION`_ 1.
LLVM IR Blocks
^^^^^^^^^^^^^^
@@ -553,13 +556,57 @@ block may contain the following sub-blocks:
* `FUNCTION_BLOCK`_
* `METADATA_BLOCK`_
+.. _MODULE_CODE_VERSION:
+
MODULE_CODE_VERSION Record
^^^^^^^^^^^^^^^^^^^^^^^^^^
``[VERSION, version#]``
The ``VERSION`` record (code 1) contains a single value indicating the format
-version. Only version 0 is supported at this time.
+version. Versions 0 and 1 are supported at this time. The difference between
+version 0 and 1 is in the encoding of instruction operands in
+each `FUNCTION_BLOCK`_.
+
+In version 0, each value defined by an instruction is assigned an ID
+unique to the function. Function-level value IDs are assigned starting from
+``NumModuleValues`` since they share the same namespace as module-level
+values. The value enumerator resets after each function. When a value is
+an operand of an instruction, the value ID is used to represent the operand.
+For large functions or large modules, these operand values can be large.
+
+The encoding in version 1 attempts to avoid large operand values
+in common cases. Instead of using the value ID directly, operands are
+encoded as relative to the current instruction. Thus, if an operand
+is the value defined by the previous instruction, the operand
+will be encoded as 1.
+
+For example, instead of
+
+.. code-block:: llvm
+
+ #n = load #n-1
+ #n+1 = icmp eq #n, #const0
+ br #n+1, label #(bb1), label #(bb2)
+
+version 1 will encode the instructions as
+
+.. code-block:: llvm
+
+ #n = load #1
+ #n+1 = icmp eq #1, (#n+1)-#const0
+ br #1, label #(bb1), label #(bb2)
+
+Note in the example that operands which are constants also use
+the relative encoding, while operands like basic block labels
+do not use the relative encoding.
+
+Forward references will result in a negative value.
+This can be inefficient, as operands are normally encoded
+as unsigned VBRs. However, forward references are rare, except in the
+case of phi instructions. For phi instructions, operands are encoded as
+`Signed VBRs`_ to deal with forward references.
+
MODULE_CODE_TRIPLE Record
^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/CMake.rst b/docs/CMake.rst
index e1761c5b1d45..7f0420c4469f 100644
--- a/docs/CMake.rst
+++ b/docs/CMake.rst
@@ -273,11 +273,6 @@ LLVM-specific variables
**LLVM_USE_INTEL_JITEVENTS**:BOOL
Enable building support for Intel JIT Events API. Defaults to OFF
-**LLVM_INTEL_JITEVENTS_DIR**:PATH
- Path to installation of Intel(R) VTune(TM) Amplifier XE 2011, used to locate
- the ``jitprofiling`` library. Default = ``%VTUNE_AMPLIFIER_XE_2011_DIR%``
- (Windows) | ``/opt/intel/vtune_amplifier_xe_2011`` (Linux)
-
Executing the test suite
========================
diff --git a/docs/CodeGenerator.rst b/docs/CodeGenerator.rst
index d1d0231105b6..5fab76ec1a44 100644
--- a/docs/CodeGenerator.rst
+++ b/docs/CodeGenerator.rst
@@ -81,7 +81,7 @@ Required components in the code generator
The two pieces of the LLVM code generator are the high-level interface to the
code generator and the set of reusable components that can be used to build
target-specific backends. The two most important interfaces (:raw-html:``
-`TargetMachine`_ :raw-html:` ` and :raw-html:`` `TargetData`_
+`TargetMachine`_ :raw-html:` ` and :raw-html:`` `DataLayout`_
:raw-html:` `) are the only ones that are required to be defined for a
backend to fit into the LLVM system, but the others must be defined if the
reusable code generator components are going to be used.
@@ -197,7 +197,7 @@ any particular client. These classes are designed to capture the *abstract*
properties of the target (such as the instructions and registers it has), and do
not incorporate any particular pieces of code generation algorithms.
-All of the target description classes (except the :raw-html:`` `TargetData`_
+All of the target description classes (except the :raw-html:`` `DataLayout`_
:raw-html:` ` class) are designed to be subclassed by the concrete target
implementation, and have virtual methods implemented. To get to these
implementations, the :raw-html:`` `TargetMachine`_ :raw-html:` ` class
@@ -214,18 +214,18 @@ the ``get*Info`` methods (``getInstrInfo``, ``getRegisterInfo``,
``getFrameInfo``, etc.). This class is designed to be specialized by a concrete
target implementation (e.g., ``X86TargetMachine``) which implements the various
virtual methods. The only required target description class is the
-:raw-html:`` `TargetData`_ :raw-html:` ` class, but if the code
+:raw-html:`` `DataLayout`_ :raw-html:` ` class, but if the code
generator components are to be used, the other interfaces should be implemented
as well.
-.. _TargetData:
+.. _DataLayout:
-The ``TargetData`` class
+The ``DataLayout`` class
------------------------
-The ``TargetData`` class is the only required target description class, and it
-is the only class that is not extensible (you cannot derived a new class from
-it). ``TargetData`` specifies information about how the target lays out memory
+The ``DataLayout`` class is the only required target description class, and it
+is the only class that is not extensible (you cannot derive a new class from
+it). ``DataLayout`` specifies information about how the target lays out memory
for structures, the alignment requirements for various data types, the size of
pointers in the target, and whether the target is little-endian or
big-endian.
@@ -248,7 +248,7 @@ operations. Among other things, this class indicates:
* the type to use for shift amounts, and
* various high-level characteristics, like whether it is profitable to turn
- division by a constant into a multiplication sequence
+ division by a constant into a multiplication sequence.
The ``TargetRegisterInfo`` class
--------------------------------
@@ -256,10 +256,10 @@ The ``TargetRegisterInfo`` class
The ``TargetRegisterInfo`` class is used to describe the register file of the
target and any interactions between the registers.
-Registers in the code generator are represented in the code generator by
-unsigned integers. Physical registers (those that actually exist in the target
-description) are unique small numbers, and virtual registers are generally
-large. Note that register ``#0`` is reserved as a flag value.
+Registers are represented in the code generator by unsigned integers. Physical
+registers (those that actually exist in the target description) are unique
+small numbers, and virtual registers are generally large. Note that
+register ``#0`` is reserved as a flag value.
Each register in the processor description has an associated
``TargetRegisterDesc`` entry, which provides a textual name for the register
@@ -390,7 +390,7 @@ functions make it easy to build arbitrary machine instructions. Usage of the
MachineInstr *MI = BuildMI(X86::MOV32ri, 1, DestReg).addImm(42);
// Create the same instr, but insert it at the end of a basic block.
- MachineBasicBlock &MBB = ...
+ MachineBasicBlock &MBB = ...
BuildMI(MBB, X86::MOV32ri, 1, DestReg).addImm(42);
// Create the same instr, but insert it before a specified iterator point.
@@ -404,7 +404,7 @@ functions make it easy to build arbitrary machine instructions. Usage of the
MI = BuildMI(X86::SAHF, 0);
// Create a self looping branch instruction.
- BuildMI(MBB, X86::JNE, 1).addMBB(&MBB);
+ BuildMI(MBB, X86::JNE, 1).addMBB(&MBB);
The key thing to remember with the ``BuildMI`` functions is that you have to
specify the number of operands that the machine instruction will take. This
@@ -838,8 +838,7 @@ Initial SelectionDAG Construction
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The initial SelectionDAG is na\ :raw-html:`ï`\ vely peephole expanded from
-the LLVM input by the ``SelectionDAGLowering`` class in the
-``lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp`` file. The intent of this pass
+the LLVM input by the ``SelectionDAGBuilder`` class. The intent of this pass
is to expose as much low-level, target-specific details to the SelectionDAG as
possible. This pass is mostly hard-coded (e.g. an LLVM ``add`` turns into an
``SDNode add`` while a ``getelementptr`` is expanded into the obvious
diff --git a/docs/CodingStandards.rst b/docs/CodingStandards.rst
index a416a1e856fa..90835307b15c 100644
--- a/docs/CodingStandards.rst
+++ b/docs/CodingStandards.rst
@@ -79,10 +79,11 @@ tree. The standard header looks like this:
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
- //
- // This file contains the declaration of the Instruction class, which is the
- // base class for all of the VM instructions.
- //
+ ///
+ /// \file
+ /// \brief This file contains the declaration of the Instruction class, which is
+ /// the base class for all of the VM instructions.
+ ///
//===----------------------------------------------------------------------===//
A few things to note about this particular format: The "``-*- C++ -*-``" string
@@ -100,10 +101,12 @@ The next section in the file is a concise note that defines the license that the
file is released under. This makes it perfectly clear what terms the source
code can be distributed under and should not be modified in any way.
-The main body of the description does not have to be very long in most cases.
-Here it's only two lines. If an algorithm is being implemented or something
-tricky is going on, a reference to the paper where it is published should be
-included, as well as any notes or *gotchas* in the code to watch out for.
+The main body is a ``doxygen`` comment describing the purpose of the file. It
+should have a ``\brief`` command that describes the file in one or two
+sentences. Any additional information should be separated by a blank line. If
+an algorithm is being implemented or something tricky is going on, a reference
+to the paper where it is published should be included, as well as any notes or
+*gotchas* in the code to watch out for.
Class overviews
"""""""""""""""
@@ -143,6 +146,132 @@ useful to use C style (``/* */``) comments however:
To comment out a large block of code, use ``#if 0`` and ``#endif``. These nest
properly and are better behaved in general than C style comments.
+Doxygen Use in Documentation Comments
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Use the ``\file`` command to turn the standard file header into a file-level
+comment.
+
+Include descriptive ``\brief`` paragraphs for all public interfaces (public
+classes, member and non-member functions). Explain API use and purpose in
+``\brief`` paragraphs, don't just restate the information that can be inferred
+from the API name. Put detailed discussion into separate paragraphs.
+
+To refer to parameter names inside a paragraph, use the ``\p name`` command.
+Don't use the ``\arg name`` command since it starts a new paragraph that
+contains documentation for the parameter.
+
+Wrap non-inline code examples in ``\code ... \endcode``.
+
+To document a function parameter, start a new paragraph with the
+``\param name`` command. If the parameter is used as an out or an in/out
+parameter, use the ``\param [out] name`` or ``\param [in,out] name`` command,
+respectively.
+
+To describe function return value, start a new paragraph with the ``\returns``
+command.
+
+A minimal documentation comment:
+
+.. code-block:: c++
+
+ /// \brief Does foo and bar.
+ void fooBar(bool Baz);
+
+A documentation comment that uses all Doxygen features in a preferred way:
+
+.. code-block:: c++
+
+ /// \brief Does foo and bar.
+ ///
+ /// Does not do foo the usual way if \p Baz is true.
+ ///
+ /// Typical usage:
+ /// \code
+ /// fooBar(false, "quux", Res);
+ /// \endcode
+ ///
+ /// \param Quux kind of foo to do.
+ /// \param [out] Result filled with bar sequence on foo success.
+ ///
+ /// \returns true on success.
+ bool fooBar(bool Baz, StringRef Quux, std::vector &Result);
+
+Don't duplicate the documentation comment in the header file and in the
+implementation file. Put the documentation comments for public APIs into the
+header file. Documentation comments for private APIs can go to the
+implementation file. In any case, implementation files can include additional
+comments (not necessarily in Doxygen markup) to explain implementation details
+as needed.
+
+Don't duplicate function or class name at the beginning of the comment.
+For humans it is obvious which function or class is being documented;
+automatic documentation processing tools are smart enough to bind the comment
+to the correct declaration.
+
+Wrong:
+
+.. code-block:: c++
+
+ // In Something.h:
+
+ /// Something - An abstraction for some complicated thing.
+ class Something {
+ public:
+ /// fooBar - Does foo and bar.
+ void fooBar();
+ };
+
+ // In Something.cpp:
+
+ /// fooBar - Does foo and bar.
+ void Something::fooBar() { ... }
+
+Correct:
+
+.. code-block:: c++
+
+ // In Something.h:
+
+ /// \brief An abstraction for some complicated thing.
+ class Something {
+ public:
+ /// \brief Does foo and bar.
+ void fooBar();
+ };
+
+ // In Something.cpp:
+
+ // Builds a B-tree in order to do foo. See paper by...
+ void Something::fooBar() { ... }
+
+It is not required to use additional Doxygen features, but sometimes it might
+be a good idea to do so.
+
+Consider:
+
+* adding comments to any narrow namespace containing a collection of
+ related functions or types;
+
+* using top-level groups to organize a collection of related functions at
+ namespace scope where the grouping is smaller than the namespace;
+
+* using member groups and additional comments attached to member
+ groups to organize within a class.
+
+For example:
+
+.. code-block:: c++
+
+ class Something {
+ /// \name Functions that do Foo.
+ /// @{
+ void fooBar();
+ void fooBaz();
+ /// @}
+ ...
+ };
+
``#include`` Style
^^^^^^^^^^^^^^^^^^
@@ -421,9 +550,9 @@ exit from a function, consider this "bad" code:
.. code-block:: c++
- Value *DoSomething(Instruction *I) {
+ Value *doSomething(Instruction *I) {
if (!isa(I) &&
- I->hasOneUse() && SomeOtherThing(I)) {
+ I->hasOneUse() && doOtherThing(I)) {
... some long code ....
}
@@ -445,7 +574,7 @@ It is much preferred to format the code like this:
.. code-block:: c++
- Value *DoSomething(Instruction *I) {
+ Value *doSomething(Instruction *I) {
// Terminators never need 'something' done to them because ...
if (isa(I))
return 0;
@@ -456,7 +585,7 @@ It is much preferred to format the code like this:
return 0;
// This is really just here for example.
- if (!SomeOtherThing(I))
+ if (!doOtherThing(I))
return 0;
... some long code ....
@@ -601,9 +730,8 @@ code to be structured like this:
.. code-block:: c++
- /// ListContainsFoo - Return true if the specified list has an element that is
- /// a foo.
- static bool ListContainsFoo(const std::vector &List) {
+ /// \returns true if the specified list has an element that is a foo.
+ static bool containsFoo(const std::vector &List) {
for (unsigned i = 0, e = List.size(); i != e; ++i)
if (List[i]->isFoo())
return true;
@@ -611,7 +739,7 @@ code to be structured like this:
}
...
- if (ListContainsFoo(BarList)) {
+ if (containsFoo(BarList)) {
...
}
@@ -714,7 +842,7 @@ enforced, and hopefully what to do about it. Here is one complete example:
.. code-block:: c++
inline Value *getOperand(unsigned i) {
- assert(i < Operands.size() && "getOperand() out of range!");
+ assert(i < Operands.size() && "getOperand() out of range!");
return Operands[i];
}
@@ -734,23 +862,28 @@ Here are more examples:
You get the idea.
-Please be aware that, when adding assert statements, not all compilers are aware
-of the semantics of the assert. In some places, asserts are used to indicate a
-piece of code that should not be reached. These are typically of the form:
+In the past, asserts were used to indicate a piece of code that should not be
+reached. These were typically of the form:
.. code-block:: c++
- assert(0 && "Some helpful error message");
+ assert(0 && "Invalid radix for integer literal");
-When used in a function that returns a value, they should be followed with a
-return statement and a comment indicating that this line is never reached. This
-will prevent a compiler which is unable to deduce that the assert statement
-never returns from generating a warning.
+This has a few issues, the main one being that some compilers might not
+understand the assertion, or warn about a missing return in builds where
+assertions are compiled out.
+
+Today, we have something much better: ``llvm_unreachable``:
.. code-block:: c++
- assert(0 && "Some helpful error message");
- return 0;
+ llvm_unreachable("Invalid radix for integer literal");
+
+When assertions are enabled, this will print the message if it's ever reached
+and then exit the program. When assertions are disabled (i.e. in release
+builds), ``llvm_unreachable`` becomes a hint to compilers to skip generating
+code for this branch. If the compiler does not support this, it will fall back
+to the "abort" implementation.
Another issue is that values used only by assertions will produce an "unused
value" warning when assertions are disabled. For example, this code will warn:
@@ -818,6 +951,52 @@ least one out-of-line virtual method in the class. Without this, the compiler
will copy the vtable and RTTI into every ``.o`` file that ``#include``\s the
header, bloating ``.o`` file sizes and increasing link times.
+Don't use default labels in fully covered switches over enumerations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+``-Wswitch`` warns if a switch, without a default label, over an enumeration
+does not cover every enumeration value. If you write a default label on a fully
+covered switch over an enumeration then the ``-Wswitch`` warning won't fire
+when new elements are added to that enumeration. To help avoid adding these
+kinds of defaults, Clang has the warning ``-Wcovered-switch-default`` which is
+off by default but turned on when building LLVM with a version of Clang that
+supports the warning.
+
+A knock-on effect of this stylistic requirement is that when building LLVM with
+GCC you may get warnings related to "control may reach end of non-void function"
+if you return from each case of a covered switch-over-enum because GCC assumes
+that the enum expression may take any representable value, not just those of
+individual enumerators. To suppress this warning, use ``llvm_unreachable`` after
+the switch.
+
+Use ``LLVM_DELETED_FUNCTION`` to mark uncallable methods
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Prior to C++11, a common pattern to make a class uncopyable was to declare an
+unimplemented copy constructor and copy assignment operator and make them
+private. This would give a compiler error for accessing a private method or a
+linker error because it wasn't implemented.
+
+With C++11, we can mark methods that won't be implemented with ``= delete``.
+This will trigger a much better error message and tell the compiler that the
+method will never be implemented. This enables other checks like
+``-Wunused-private-field`` to run correctly on classes that contain these
+methods.
+
+To maintain compatibility with C++03, ``LLVM_DELETED_FUNCTION`` should be used
+which will expand to ``= delete`` if the compiler supports it. These methods
+should still be declared private. Example of the uncopyable pattern:
+
+.. code-block:: c++
+
+ class DontCopy {
+ private:
+ DontCopy(const DontCopy&) LLVM_DELETED_FUNCTION;
+ DontCopy &operator =(const DontCopy&) LLVM_DELETED_FUNCTION;
+ public:
+ ...
+ };
+
Don't evaluate ``end()`` every time through a loop
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1002,21 +1181,21 @@ If a namespace definition is small and *easily* fits on a screen (say, less than
namespace llvm {
namespace X86 {
- /// RelocationType - An enum for the x86 relocation codes. Note that
+ /// \brief An enum for the x86 relocation codes. Note that
/// the terminology here doesn't follow x86 convention - word means
/// 32-bit and dword means 64-bit.
enum RelocationType {
- /// reloc_pcrel_word - PC relative relocation, add the relocated value to
+ /// \brief PC relative relocation, add the relocated value to
/// the value already in memory, after we adjust it for where the PC is.
reloc_pcrel_word = 0,
- /// reloc_picrel_word - PIC base relative relocation, add the relocated
- /// value to the value already in memory, after we adjust it for where the
+ /// \brief PIC base relative relocation, add the relocated value to
+ /// the value already in memory, after we adjust it for where the
/// PIC base is.
reloc_picrel_word = 1,
- /// reloc_absolute_word, reloc_absolute_dword - Absolute relocation, just
- /// add the relocated value to the value already in memory.
+ /// \brief Absolute relocation, just add the relocated value to the
+ /// value already in memory.
reloc_absolute_word = 2,
reloc_absolute_dword = 3
};
@@ -1035,7 +1214,7 @@ closed. For example:
namespace llvm {
namespace knowledge {
- /// Grokable - This class represents things that Smith can have an intimate
+ /// This class represents things that Smith can have an intimate
/// understanding of and contains the data associated with it.
class Grokable {
...
@@ -1092,7 +1271,7 @@ good:
};
} // end anonymous namespace
- static void Helper() {
+ static void runHelper() {
...
}
@@ -1112,7 +1291,7 @@ This is bad:
bool operator<(const char *RHS) const;
};
- void Helper() {
+ void runHelper() {
...
}
@@ -1122,7 +1301,7 @@ This is bad:
} // end anonymous namespace
-This is bad specifically because if you're looking at "``Helper``" in the middle
+This is bad specifically because if you're looking at "``runHelper``" in the middle
of a large C++ file, that you have no immediate way to tell if it is local to
the file. When it is marked static explicitly, this is immediately obvious.
Also, there is no reason to enclose the definition of "``operator<``" in the
diff --git a/docs/CommandGuide/FileCheck.rst b/docs/CommandGuide/FileCheck.rst
index 51a9bf6293b3..1d7a462bd71f 100644
--- a/docs/CommandGuide/FileCheck.rst
+++ b/docs/CommandGuide/FileCheck.rst
@@ -45,6 +45,11 @@ OPTIONS
+**--input-file** *filename*
+
+ File to check (defaults to stdin).
+
+
**--strict-whitespace**
By default, FileCheck canonicalizes input horizontal whitespace (spaces and
@@ -271,8 +276,9 @@ simple example:
The first check line matches a regex (**%[a-z]+**) and captures it into
the variable "REGISTER". The second line verifies that whatever is in REGISTER
occurs later in the file after an "andw". FileCheck variable references are
-always contained in **[[ ]]** pairs, are named, and their names can be
-name, then it is a definition of the variable, if not, it is a use.
+always contained in **[[ ]]** pairs, and their names can be formed with the
+regex **[a-zA-Z][a-zA-Z0-9]***. If a colon follows the name, then it is a
+definition of the variable; otherwise, it is a use.
FileCheck variables can be defined multiple times, and uses always get the
latest value. Note that variables are all read at the start of a "CHECK" line
diff --git a/docs/CommandGuide/lit.rst b/docs/CommandGuide/lit.rst
index 3eb0be91f137..9e96cd2a4bfd 100644
--- a/docs/CommandGuide/lit.rst
+++ b/docs/CommandGuide/lit.rst
@@ -125,6 +125,10 @@ EXECUTION OPTIONS
*--error-exitcode* argument for valgrind is used so that valgrind failures will
cause the program to exit with a non-zero status.
+ When this option is enabled, **lit** will also automatically provide a
+ "valgrind" feature that can be used to conditionally disable (or expect failure
+ in) certain tests.
+
**--vg-arg**\ =\ *ARG*
@@ -133,6 +137,15 @@ EXECUTION OPTIONS
+**--vg-leak**
+
+ When *--vg* is used, enable memory leak checks. When this option is enabled,
+ **lit** will also automatically provide a "vg_leak" feature that can be
+ used to conditionally disable (or expect failure in) certain tests.
+
+
+
+
**--time-tests**
Track the wall time individual tests take to execute and includes the results in
diff --git a/docs/CompilerWriterInfo.html b/docs/CompilerWriterInfo.html
deleted file mode 100644
index 67da783b1679..000000000000
--- a/docs/CompilerWriterInfo.html
+++ /dev/null
@@ -1,267 +0,0 @@
-
-
-
-
- Architecture/platform information for compiler writers
-
-
-
-
-
-
- Architecture/platform information for compiler writers
-
-
-
-
Note: This document is a work-in-progress. Additions and clarifications
- are welcome.
-
-
-
- Hardware
-
- ARM
- Itanium
- MIPS
- PowerPC
- SPARC
- X86
- Other lists
-
- Application Binary Interface (ABI)
-
- Linux
- OS X
-
- Miscellaneous resources
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
IBM - Official manuals and docs
-
-
-
-
-
Other documents, collections, notes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
AMD - Official manuals and docs
-
-
-
-
-
Intel - Official manuals and docs
-
-
-
-
-
Other x86-specific information
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Misha Brukman
- LLVM Compiler Infrastructure
- Last modified: $Date: 2012-04-19 22:20:34 +0200 (Thu, 19 Apr 2012) $
-
-
-
-
diff --git a/docs/CompilerWriterInfo.rst b/docs/CompilerWriterInfo.rst
new file mode 100644
index 000000000000..e41f5f9eecea
--- /dev/null
+++ b/docs/CompilerWriterInfo.rst
@@ -0,0 +1,118 @@
+.. _compiler_writer_info:
+
+========================================================
+Architecture & Platform Information for Compiler Writers
+========================================================
+
+.. contents::
+ :local:
+
+.. note::
+
+ This document is a work-in-progress. Additions and clarifications are
+ welcome.
+
+ Compiled by `Misha Brukman `_.
+
+Hardware
+========
+
+ARM
+---
+
+* `ARM documentation `_ (`Processor Cores `_ Cores)
+
+* `ABI `_
+
+Itanium (ia64)
+--------------
+
+* `Itanium documentation `_
+
+MIPS
+----
+
+* `MIPS Processor Architecture `_
+
+PowerPC
+-------
+
+IBM - Official manuals and docs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* `PowerPC Architecture Book `_
+
+ * Book I: `PowerPC User Instruction Set Architecture `_
+
+ * Book II: `PowerPC Virtual Environment Architecture `_
+
+ * Book III: `PowerPC Operating Environment Architecture `_
+
+* `PowerPC Compiler Writer's Guide `_
+
+* `PowerPC Processor Manuals `_
+
+* `Intro to PowerPC Architecture `_
+
+* `IBM AIX/5L for POWER Assembly Reference `_
+
+Other documents, collections, notes
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* `PowerPC ABI documents `_
+* `PowerPC64 alignment of long doubles (from GCC) `_
+* `Long branch stubs for powerpc64-linux (from binutils) `_
+
+SPARC
+-----
+
+* `SPARC resources `_
+* `SPARC standards `_
+
+X86
+---
+
+AMD - Official manuals and docs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* `AMD processor manuals `_
+* `X86-64 ABI `_
+
+Intel - Official manuals and docs
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* `IA-32 manuals `_
+* `Intel Itanium documentation `_
+
+Other x86-specific information
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* `Calling conventions for different C++ compilers and operating systems `_
+
+Other relevant lists
+--------------------
+
+* `GCC reading list `_
+
+ABI
+===
+
+Linux
+-----
+
+* `PowerPC 64-bit ELF ABI Supplement `_
+
+OS X
+----
+
+* `Mach-O Runtime Architecture `_
+* `Notes on Mach-O ABI `_
+
+Miscellaneous Resources
+=======================
+
+* `Executable File Format library `_
+
+* `GCC prefetch project `_ page has a
+ good survey of the prefetching capabilities of a variety of modern
+ processors.
diff --git a/docs/DebuggingJITedCode.html b/docs/DebuggingJITedCode.html
deleted file mode 100644
index 652572cc8441..000000000000
--- a/docs/DebuggingJITedCode.html
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
-
-
- Debugging JITed Code With GDB
-
-
-
-
-Debugging JIT-ed Code With GDB
-
- Background
- GDB Version
- Debugging MCJIT-ed code
-
-
-Written by Reid Kleckner and Eli Bendersky
-
-
-
-
-
-
-
Without special runtime support, debugging dynamically generated code with
-GDB (as well as most debuggers) can be quite painful. Debuggers generally read
-debug information from the object file of the code, but for JITed code, there is
-no such file to look for.
-
-
-
In order to communicate the necessary debug info to GDB, an interface for
-registering JITed code with debuggers has been designed and implemented for
-GDB and LLVM MCJIT. At a high level, whenever MCJIT generates new machine code,
-it does so in an in-memory object file that contains the debug information in
-DWARF format. MCJIT then adds this in-memory object file to a global list of
-dynamically generated object files and calls a special function
-(__jit_debug_register_code ) marked noinline that GDB knows about. When
-GDB attaches to a process, it puts a breakpoint in this function and loads all
-of the object files in the global list. When MCJIT calls the registration
-function, GDB catches the breakpoint signal, loads the new object file from
-the inferior's memory, and resumes the execution. In this way, GDB can get the
-necessary debug information.
-
-
-
-
-
-
-
-In order to debug code JIT-ed by LLVM, you need GDB 7.0 or newer, which is
-available on most modern distributions of Linux. The version of GDB that Apple
-ships with Xcode has been frozen at 6.3 for a while. LLDB may be a better
-option for debugging JIT-ed code on Mac OS X.
-
-
-
-
-
-
-
-
-
The emerging MCJIT component of LLVM allows full debugging of JIT-ed code with
-GDB. This is due to MCJIT's ability to use the MC emitter to provide full
-DWARF debugging information to GDB.
-
-
Note that lli has to be passed the -use-mcjit flag to JIT the code
-with MCJIT instead of the old JIT.
-
-
-
-
-
-
Consider the following C code (with line numbers added to make the example
-easier to follow):
-
-
-1 int compute_factorial(int n)
-2 {
-3 if (n <= 1)
-4 return 1;
-5
-6 int f = n;
-7 while (--n > 1)
-8 f *= n;
-9 return f;
-10 }
-11
-12
-13 int main(int argc, char** argv)
-14 {
-15 if (argc < 2)
-16 return -1;
-17 char firstletter = argv[1][0];
-18 int result = compute_factorial(firstletter - '0');
-19
-20 // Returned result is clipped at 255...
-21 return result;
-22 }
-
-
-
Here is a sample command line session that shows how to build and run this
-code via lli inside GDB:
-
-
-
-$ $BINPATH/clang -cc1 -O0 -g -emit-llvm showdebug.c
-$ gdb --quiet --args $BINPATH/lli -use-mcjit showdebug.ll 5
-Reading symbols from $BINPATH/lli...done.
-(gdb) b showdebug.c:6
-No source file named showdebug.c.
-Make breakpoint pending on future shared library load? (y or [n]) y
-Breakpoint 1 (showdebug.c:6) pending.
-(gdb) r
-Starting program: $BINPATH/lli -use-mcjit showdebug.ll 5
-[Thread debugging using libthread_db enabled]
-
-Breakpoint 1, compute_factorial (n=5) at showdebug.c:6
-6 int f = n;
-(gdb) p n
-$1 = 5
-(gdb) p f
-$2 = 0
-(gdb) n
-7 while (--n > 1)
-(gdb) p f
-$3 = 5
-(gdb) b showdebug.c:9
-Breakpoint 2 at 0x7ffff7ed404c: file showdebug.c, line 9.
-(gdb) c
-Continuing.
-
-Breakpoint 2, compute_factorial (n=1) at showdebug.c:9
-9 return f;
-(gdb) p f
-$4 = 120
-(gdb) bt
-#0 compute_factorial (n=1) at showdebug.c:9
-#1 0x00007ffff7ed40a9 in main (argc=2, argv=0x16677e0) at showdebug.c:18
-#2 0x3500000001652748 in ?? ()
-#3 0x00000000016677e0 in ?? ()
-#4 0x0000000000000002 in ?? ()
-#5 0x0000000000d953b3 in llvm::MCJIT::runFunction (this=0x16151f0, F=0x1603020, ArgValues=...) at /home/ebenders_test/llvm_svn_rw/lib/ExecutionEngine/MCJIT/MCJIT.cpp:161
-#6 0x0000000000dc8872 in llvm::ExecutionEngine::runFunctionAsMain (this=0x16151f0, Fn=0x1603020, argv=..., envp=0x7fffffffe040)
- at /home/ebenders_test/llvm_svn_rw/lib/ExecutionEngine/ExecutionEngine.cpp:397
-#7 0x000000000059c583 in main (argc=4, argv=0x7fffffffe018, envp=0x7fffffffe040) at /home/ebenders_test/llvm_svn_rw/tools/lli/lli.cpp:324
-(gdb) finish
-Run till exit from #0 compute_factorial (n=1) at showdebug.c:9
-0x00007ffff7ed40a9 in main (argc=2, argv=0x16677e0) at showdebug.c:18
-18 int result = compute_factorial(firstletter - '0');
-Value returned is $5 = 120
-(gdb) p result
-$6 = 23406408
-(gdb) n
-21 return result;
-(gdb) p result
-$7 = 120
-(gdb) c
-Continuing.
-
-Program exited with code 0170.
-(gdb)
-
-
-
-
-
-
-
-
-
-
-
-
- Reid Kleckner ,
- Eli Bendersky
- The LLVM Compiler Infrastructure
- Last modified: $Date: 2012-05-13 16:36:15 +0200 (Sun, 13 May 2012) $
-
-
-
diff --git a/docs/DebuggingJITedCode.rst b/docs/DebuggingJITedCode.rst
new file mode 100644
index 000000000000..eeb2f7787dae
--- /dev/null
+++ b/docs/DebuggingJITedCode.rst
@@ -0,0 +1,147 @@
+.. _debugging-jited-code:
+
+==============================
+Debugging JIT-ed Code With GDB
+==============================
+
+.. sectionauthor:: Reid Kleckner and Eli Bendersky
+
+Background
+==========
+
+Without special runtime support, debugging dynamically generated code with
+GDB (as well as most debuggers) can be quite painful. Debuggers generally
+read debug information from the object file of the code, but for JITed
+code, there is no such file to look for.
+
+In order to communicate the necessary debug info to GDB, an interface for
+registering JITed code with debuggers has been designed and implemented for
+GDB and LLVM MCJIT. At a high level, whenever MCJIT generates new machine code,
+it does so in an in-memory object file that contains the debug information in
+DWARF format. MCJIT then adds this in-memory object file to a global list of
+dynamically generated object files and calls a special function
+(``__jit_debug_register_code``) marked noinline that GDB knows about. When
+GDB attaches to a process, it puts a breakpoint in this function and loads all
+of the object files in the global list. When MCJIT calls the registration
+function, GDB catches the breakpoint signal, loads the new object file from
+the inferior's memory, and resumes the execution. In this way, GDB can get the
+necessary debug information.
+
+GDB Version
+===========
+
+In order to debug code JIT-ed by LLVM, you need GDB 7.0 or newer, which is
+available on most modern distributions of Linux. The version of GDB that
+Apple ships with Xcode has been frozen at 6.3 for a while. LLDB may be a
+better option for debugging JIT-ed code on Mac OS X.
+
+
+Debugging MCJIT-ed code
+=======================
+
+The emerging MCJIT component of LLVM allows full debugging of JIT-ed code with
+GDB. This is due to MCJIT's ability to use the MC emitter to provide full
+DWARF debugging information to GDB.
+
+Note that lli has to be passed the ``-use-mcjit`` flag to JIT the code with
+MCJIT instead of the old JIT.
+
+Example
+-------
+
+Consider the following C code (with line numbers added to make the example
+easier to follow):
+
+..
+ FIXME:
+ Sphinx has the ability to automatically number these lines by adding
+ :linenos: on the line immediately following the `.. code-block:: c`, but
+ it looks like garbage; the line numbers don't even line up with the
+ lines. Is this a Sphinx bug, or is it a CSS problem?
+
+.. code-block:: c
+
+ 1 int compute_factorial(int n)
+ 2 {
+ 3 if (n <= 1)
+ 4 return 1;
+ 5
+ 6 int f = n;
+ 7 while (--n > 1)
+ 8 f *= n;
+ 9 return f;
+ 10 }
+ 11
+ 12
+ 13 int main(int argc, char** argv)
+ 14 {
+ 15 if (argc < 2)
+ 16 return -1;
+ 17 char firstletter = argv[1][0];
+ 18 int result = compute_factorial(firstletter - '0');
+ 19
+ 20 // Returned result is clipped at 255...
+ 21 return result;
+ 22 }
+
+Here is a sample command line session that shows how to build and run this
+code via ``lli`` inside GDB:
+
+.. code-block:: bash
+
+ $ $BINPATH/clang -cc1 -O0 -g -emit-llvm showdebug.c
+ $ gdb --quiet --args $BINPATH/lli -use-mcjit showdebug.ll 5
+ Reading symbols from $BINPATH/lli...done.
+ (gdb) b showdebug.c:6
+ No source file named showdebug.c.
+ Make breakpoint pending on future shared library load? (y or [n]) y
+ Breakpoint 1 (showdebug.c:6) pending.
+ (gdb) r
+ Starting program: $BINPATH/lli -use-mcjit showdebug.ll 5
+ [Thread debugging using libthread_db enabled]
+
+ Breakpoint 1, compute_factorial (n=5) at showdebug.c:6
+ 6 int f = n;
+ (gdb) p n
+ $1 = 5
+ (gdb) p f
+ $2 = 0
+ (gdb) n
+ 7 while (--n > 1)
+ (gdb) p f
+ $3 = 5
+ (gdb) b showdebug.c:9
+ Breakpoint 2 at 0x7ffff7ed404c: file showdebug.c, line 9.
+ (gdb) c
+ Continuing.
+
+ Breakpoint 2, compute_factorial (n=1) at showdebug.c:9
+ 9 return f;
+ (gdb) p f
+ $4 = 120
+ (gdb) bt
+ #0 compute_factorial (n=1) at showdebug.c:9
+ #1 0x00007ffff7ed40a9 in main (argc=2, argv=0x16677e0) at showdebug.c:18
+ #2 0x3500000001652748 in ?? ()
+ #3 0x00000000016677e0 in ?? ()
+ #4 0x0000000000000002 in ?? ()
+ #5 0x0000000000d953b3 in llvm::MCJIT::runFunction (this=0x16151f0, F=0x1603020, ArgValues=...) at /home/ebenders_test/llvm_svn_rw/lib/ExecutionEngine/MCJIT/MCJIT.cpp:161
+ #6 0x0000000000dc8872 in llvm::ExecutionEngine::runFunctionAsMain (this=0x16151f0, Fn=0x1603020, argv=..., envp=0x7fffffffe040)
+ at /home/ebenders_test/llvm_svn_rw/lib/ExecutionEngine/ExecutionEngine.cpp:397
+ #7 0x000000000059c583 in main (argc=4, argv=0x7fffffffe018, envp=0x7fffffffe040) at /home/ebenders_test/llvm_svn_rw/tools/lli/lli.cpp:324
+ (gdb) finish
+ Run till exit from #0 compute_factorial (n=1) at showdebug.c:9
+ 0x00007ffff7ed40a9 in main (argc=2, argv=0x16677e0) at showdebug.c:18
+ 18 int result = compute_factorial(firstletter - '0');
+ Value returned is $5 = 120
+ (gdb) p result
+ $6 = 23406408
+ (gdb) n
+ 21 return result;
+ (gdb) p result
+ $7 = 120
+ (gdb) c
+ Continuing.
+
+ Program exited with code 0170.
+ (gdb)
diff --git a/docs/DeveloperPolicy.rst b/docs/DeveloperPolicy.rst
index cda281a25c12..e35e72955640 100644
--- a/docs/DeveloperPolicy.rst
+++ b/docs/DeveloperPolicy.rst
@@ -137,6 +137,9 @@ reviewees. If someone is kind enough to review your code, you should return the
favor for someone else. Note that anyone is welcome to review and give feedback
on a patch, but only people with Subversion write access can approve it.
+There is a web based code review tool that can optionally be used
+for code reviews. See :doc:`Phabricator`.
+
Code Owners
-----------
@@ -279,7 +282,7 @@ If you have recently been granted commit access, these policies apply:
#. You are granted *commit-after-approval* to all parts of LLVM. To get
approval, submit a `patch`_ to `llvm-commits
`_. When approved
- you may commit it yourself.
+ you may commit it yourself.
#. You are allowed to commit patches without approval which you think are
obvious. This is clearly a subjective decision --- we simply expect you to
diff --git a/docs/ExtendingLLVM.html b/docs/ExtendingLLVM.html
deleted file mode 100644
index 6782787d521d..000000000000
--- a/docs/ExtendingLLVM.html
+++ /dev/null
@@ -1,379 +0,0 @@
-
-
-
-
- Extending LLVM: Adding instructions, intrinsics, types, etc.
-
-
-
-
-
-
- Extending LLVM: Adding instructions, intrinsics, types, etc.
-
-
-
- Introduction and Warning
- Adding a new intrinsic function
- Adding a new instruction
- Adding a new SelectionDAG node
- Adding a new type
-
- Adding a new fundamental type
- Adding a new derived type
-
-
-
-
-
-
-
-
-
-
-
-
During the course of using LLVM, you may wish to customize it for your
-research project or for experimentation. At this point, you may realize that
-you need to add something to LLVM, whether it be a new fundamental type, a new
-intrinsic function, or a whole new instruction.
-
-
When you come to this realization, stop and think. Do you really need to
-extend LLVM? Is it a new fundamental capability that LLVM does not support at
-its current incarnation or can it be synthesized from already pre-existing LLVM
-elements? If you are not sure, ask on the LLVM-dev list. The
-reason is that extending LLVM will get involved as you need to update all the
-different passes that you intend to use with your extension, and there are
-many LLVM analyses and transformations, so it may be quite a bit of
-work.
-
-
Adding an intrinsic function is far easier than
-adding an instruction, and is transparent to optimization passes. If your added
-functionality can be expressed as a
-function call, an intrinsic function is the method of choice for LLVM
-extension.
-
-
Before you invest a significant amount of effort into a non-trivial
-extension, ask on the list if what you are
-looking to do can be done with already-existing infrastructure, or if maybe
-someone else is already working on it. You will save yourself a lot of time and
-effort by doing so.
-
-
-
-
-
-
-
-
-
-
Adding a new intrinsic function to LLVM is much easier than adding a new
-instruction. Almost all extensions to LLVM should start as an intrinsic
-function and then be turned into an instruction if warranted.
-
-
-llvm/docs/LangRef.html :
- Document the intrinsic. Decide whether it is code generator specific and
- what the restrictions are. Talk to other people about it so that you are
- sure it's a good idea.
-
-llvm/include/llvm/Intrinsics*.td :
- Add an entry for your intrinsic. Describe its memory access characteristics
- for optimization (this controls whether it will be DCE'd, CSE'd, etc). Note
- that any intrinsic using the llvm_int_ty type for an argument will
- be deemed by tblgen as overloaded and the corresponding suffix
- will be required on the intrinsic's name.
-
-llvm/lib/Analysis/ConstantFolding.cpp : If it is possible to
- constant fold your intrinsic, add support to it in the
- canConstantFoldCallTo and ConstantFoldCall functions.
-
-llvm/test/Regression/* : Add test cases for your test cases to the
- test suite
-
-
-
Once the intrinsic has been added to the system, you must add code generator
-support for it. Generally you must do the following steps:
-
-
-
-Add support to the .td file for the target(s) of your choice in
- lib/Target/*/*.td .
-
-This is usually a matter of adding a pattern to the .td file that matches
- the intrinsic, though it may obviously require adding the instructions you
- want to generate as well. There are lots of examples in the PowerPC and X86
- backend to follow.
-
-
-
-
-
-
-
-
-
-
-
As with intrinsics, adding a new SelectionDAG node to LLVM is much easier
-than adding a new instruction. New nodes are often added to help represent
-instructions common to many targets. These nodes often map to an LLVM
-instruction (add, sub) or intrinsic (byteswap, population count). In other
-cases, new nodes have been added to allow many targets to perform a common task
-(converting between floating point and integer representation) or capture more
-complicated behavior in a single node (rotate).
-
-
-include/llvm/CodeGen/ISDOpcodes.h :
- Add an enum value for the new SelectionDAG node.
-lib/CodeGen/SelectionDAG/SelectionDAG.cpp :
- Add code to print the node to getOperationName . If your new node
- can be evaluated at compile time when given constant arguments (such as an
- add of a constant with another constant), find the getNode method
- that takes the appropriate number of arguments, and add a case for your node
- to the switch statement that performs constant folding for nodes that take
- the same number of arguments as your new node.
-lib/CodeGen/SelectionDAG/LegalizeDAG.cpp :
- Add code to legalize,
- promote, and expand the node as necessary. At a minimum, you will need
- to add a case statement for your node in LegalizeOp which calls
- LegalizeOp on the node's operands, and returns a new node if any of the
- operands changed as a result of being legalized. It is likely that not all
- targets supported by the SelectionDAG framework will natively support the
- new node. In this case, you must also add code in your node's case
- statement in LegalizeOp to Expand your node into simpler, legal
- operations. The case for ISD::UREM for expanding a remainder into
- a divide, multiply, and a subtract is a good example.
-lib/CodeGen/SelectionDAG/LegalizeDAG.cpp :
- If targets may support the new node being added only at certain sizes, you
- will also need to add code to your node's case statement in
- LegalizeOp to Promote your node's operands to a larger size, and
- perform the correct operation. You will also need to add code to
- PromoteOp to do this as well. For a good example, see
- ISD::BSWAP ,
- which promotes its operand to a wider size, performs the byteswap, and then
- shifts the correct bytes right to emulate the narrower byteswap in the
- wider type.
-lib/CodeGen/SelectionDAG/LegalizeDAG.cpp :
- Add a case for your node in ExpandOp to teach the legalizer how to
- perform the action represented by the new node on a value that has been
- split into high and low halves. This case will be used to support your
- node with a 64 bit operand on a 32 bit target.
-lib/CodeGen/SelectionDAG/DAGCombiner.cpp :
- If your node can be combined with itself, or other existing nodes in a
- peephole-like fashion, add a visit function for it, and call that function
- from . There are several good examples for simple combines you
- can do; visitFABS and visitSRL are good starting places.
-
-lib/Target/PowerPC/PPCISelLowering.cpp :
- Each target has an implementation of the TargetLowering class,
- usually in its own file (although some targets include it in the same
- file as the DAGToDAGISel). The default behavior for a target is to
- assume that your new node is legal for all types that are legal for
- that target. If this target does not natively support your node, then
- tell the target to either Promote it (if it is supported at a larger
- type) or Expand it. This will cause the code you wrote in
- LegalizeOp above to decompose your new node into other legal
- nodes for this target.
-lib/Target/TargetSelectionDAG.td :
- Most current targets supported by LLVM generate code using the DAGToDAG
- method, where SelectionDAG nodes are pattern matched to target-specific
- nodes, which represent individual instructions. In order for the targets
- to match an instruction to your new node, you must add a def for that node
- to the list in this file, with the appropriate type constraints. Look at
- add , bswap , and fadd for examples.
-lib/Target/PowerPC/PPCInstrInfo.td :
- Each target has a tablegen file that describes the target's instruction
- set. For targets that use the DAGToDAG instruction selection framework,
- add a pattern for your new node that uses one or more target nodes.
- Documentation for this is a bit sparse right now, but there are several
- decent examples. See the patterns for rotl in
- PPCInstrInfo.td .
-TODO: document complex patterns.
-llvm/test/Regression/CodeGen/* : Add test cases for your new node
- to the test suite. llvm/test/Regression/CodeGen/X86/bswap.ll is
- a good example.
-
-
-
-
-
-
-
-
-
-
-
WARNING: adding instructions changes the bitcode
-format, and it will take some effort to maintain compatibility with
-the previous version. Only add an instruction if it is absolutely
-necessary.
-
-
-
-llvm/include/llvm/Instruction.def :
- add a number for your instruction and an enum name
-
-llvm/include/llvm/Instructions.h :
- add a definition for the class that will represent your instruction
-
-llvm/include/llvm/Support/InstVisitor.h :
- add a prototype for a visitor to your new instruction type
-
-llvm/lib/AsmParser/Lexer.l :
- add a new token to parse your instruction from assembly text file
-
-llvm/lib/AsmParser/llvmAsmParser.y :
- add the grammar on how your instruction can be read and what it will
- construct as a result
-
-llvm/lib/Bitcode/Reader/Reader.cpp :
- add a case for your instruction and how it will be parsed from bitcode
-
-llvm/lib/VMCore/Instruction.cpp :
- add a case for how your instruction will be printed out to assembly
-
-llvm/lib/VMCore/Instructions.cpp :
- implement the class you defined in
- llvm/include/llvm/Instructions.h
-
-Test your instruction
-
-llvm/lib/Target/* :
- Add support for your instruction to code generators, or add a lowering
- pass.
-
-llvm/test/Regression/* : add your test cases to the test suite.
-
-
-
-
Also, you need to implement (or modify) any analyses or passes that you want
-to understand this new instruction.
-
-
-
-
-
-
-
-
-
-
-
WARNING: adding new types changes the bitcode
-format, and will break compatibility with currently-existing LLVM
-installations. Only add new types if it is absolutely necessary.
-
-
-
-
-
-
-
-
-llvm/include/llvm/Type.h :
- add enum for the new type; add static Type* for this type
-
-llvm/lib/VMCore/Type.cpp :
- add mapping from TypeID => Type* ;
- initialize the static Type*
-
-llvm/lib/AsmReader/Lexer.l :
- add ability to parse in the type from text assembly
-
-llvm/lib/AsmReader/llvmAsmParser.y :
- add a token for that type
-
-
-
-
-
-
-
-
-
-
-
-llvm/include/llvm/Type.h :
- add enum for the new type; add a forward declaration of the type
- also
-
-llvm/include/llvm/DerivedTypes.h :
- add new class to represent new class in the hierarchy; add forward
- declaration to the TypeMap value type
-
-llvm/lib/VMCore/Type.cpp :
- add support for derived type to:
-
-
-std::string getTypeDescription(const Type &Ty,
- std::vector<const Type*> &TypeStack)
-bool TypesEqual(const Type *Ty, const Type *Ty2,
- std::map<const Type*, const Type*> & EqTypes)
-
-
- add necessary member functions for type, and factory methods
-
-llvm/lib/AsmReader/Lexer.l :
- add ability to parse in the type from text assembly
-
-llvm/lib/BitCode/Writer/Writer.cpp :
- modify void BitcodeWriter::outputType(const Type *T) to serialize
- your type
-
-llvm/lib/BitCode/Reader/Reader.cpp :
- modify const Type *BitcodeReader::ParseType() to read your data
- type
-
-llvm/lib/VMCore/AsmWriter.cpp :
- modify
-
-
-void calcTypeName(const Type *Ty,
- std::vector<const Type*> &TypeStack,
- std::map<const Type*,std::string> &TypeNames,
- std::string & Result)
-
-
- to output the new derived type
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The LLVM Compiler Infrastructure
-
- Last modified: $Date: 2012-04-19 22:20:34 +0200 (Thu, 19 Apr 2012) $
-
-
-
-
diff --git a/docs/ExtendingLLVM.rst b/docs/ExtendingLLVM.rst
new file mode 100644
index 000000000000..6df08eee985a
--- /dev/null
+++ b/docs/ExtendingLLVM.rst
@@ -0,0 +1,306 @@
+.. _extending_llvm:
+
+============================================================
+Extending LLVM: Adding instructions, intrinsics, types, etc.
+============================================================
+
+Introduction and Warning
+========================
+
+
+During the course of using LLVM, you may wish to customize it for your research
+project or for experimentation. At this point, you may realize that you need to
+add something to LLVM, whether it be a new fundamental type, a new intrinsic
+function, or a whole new instruction.
+
+When you come to this realization, stop and think. Do you really need to extend
+LLVM? Is it a new fundamental capability that LLVM does not support at its
+current incarnation or can it be synthesized from already pre-existing LLVM
+elements? If you are not sure, ask on the `LLVM-dev
+`_ list. The reason is that
+extending LLVM will get involved as you need to update all the different passes
+that you intend to use with your extension, and there are ``many`` LLVM analyses
+and transformations, so it may be quite a bit of work.
+
+Adding an `intrinsic function`_ is far easier than adding an
+instruction, and is transparent to optimization passes. If your added
+functionality can be expressed as a function call, an intrinsic function is the
+method of choice for LLVM extension.
+
+Before you invest a significant amount of effort into a non-trivial extension,
+**ask on the list** if what you are looking to do can be done with
+already-existing infrastructure, or if maybe someone else is already working on
+it. You will save yourself a lot of time and effort by doing so.
+
+.. _intrinsic function:
+
+Adding a new intrinsic function
+===============================
+
+Adding a new intrinsic function to LLVM is much easier than adding a new
+instruction. Almost all extensions to LLVM should start as an intrinsic
+function and then be turned into an instruction if warranted.
+
+#. ``llvm/docs/LangRef.html``:
+
+ Document the intrinsic. Decide whether it is code generator specific and
+ what the restrictions are. Talk to other people about it so that you are
+ sure it's a good idea.
+
+#. ``llvm/include/llvm/Intrinsics*.td``:
+
+ Add an entry for your intrinsic. Describe its memory access characteristics
+ for optimization (this controls whether it will be DCE'd, CSE'd, etc). Note
+ that any intrinsic using the ``llvm_int_ty`` type for an argument will
+ be deemed by ``tblgen`` as overloaded and the corresponding suffix will
+ be required on the intrinsic's name.
+
+#. ``llvm/lib/Analysis/ConstantFolding.cpp``:
+
+ If it is possible to constant fold your intrinsic, add support to it in the
+ ``canConstantFoldCallTo`` and ``ConstantFoldCall`` functions.
+
+#. ``llvm/test/Regression/*``:
+
+ Add test cases for your test cases to the test suite
+
+Once the intrinsic has been added to the system, you must add code generator
+support for it. Generally you must do the following steps:
+
+Add support to the .td file for the target(s) of your choice in
+``lib/Target/*/*.td``.
+
+ This is usually a matter of adding a pattern to the .td file that matches the
+ intrinsic, though it may obviously require adding the instructions you want to
+ generate as well. There are lots of examples in the PowerPC and X86 backend
+ to follow.
+
+Adding a new SelectionDAG node
+==============================
+
+As with intrinsics, adding a new SelectionDAG node to LLVM is much easier than
+adding a new instruction. New nodes are often added to help represent
+instructions common to many targets. These nodes often map to an LLVM
+instruction (add, sub) or intrinsic (byteswap, population count). In other
+cases, new nodes have been added to allow many targets to perform a common task
+(converting between floating point and integer representation) or capture more
+complicated behavior in a single node (rotate).
+
+#. ``include/llvm/CodeGen/ISDOpcodes.h``:
+
+ Add an enum value for the new SelectionDAG node.
+
+#. ``lib/CodeGen/SelectionDAG/SelectionDAG.cpp``:
+
+ Add code to print the node to ``getOperationName``. If your new node can be
+ evaluated at compile time when given constant arguments (such as an add of a
+ constant with another constant), find the ``getNode`` method that takes the
+ appropriate number of arguments, and add a case for your node to the switch
+ statement that performs constant folding for nodes that take the same number
+ of arguments as your new node.
+
+#. ``lib/CodeGen/SelectionDAG/LegalizeDAG.cpp``:
+
+ Add code to `legalize, promote, and expand
+ `_ the node as necessary. At a
+ minimum, you will need to add a case statement for your node in
+ ``LegalizeOp`` which calls LegalizeOp on the node's operands, and returns a
+ new node if any of the operands changed as a result of being legalized. It
+ is likely that not all targets supported by the SelectionDAG framework will
+ natively support the new node. In this case, you must also add code in your
+ node's case statement in ``LegalizeOp`` to Expand your node into simpler,
+ legal operations. The case for ``ISD::UREM`` for expanding a remainder into
+ a divide, multiply, and a subtract is a good example.
+
+#. ``lib/CodeGen/SelectionDAG/LegalizeDAG.cpp``:
+
+ If targets may support the new node being added only at certain sizes, you
+ will also need to add code to your node's case statement in ``LegalizeOp``
+ to Promote your node's operands to a larger size, and perform the correct
+ operation. You will also need to add code to ``PromoteOp`` to do this as
+ well. For a good example, see ``ISD::BSWAP``, which promotes its operand to
+ a wider size, performs the byteswap, and then shifts the correct bytes right
+ to emulate the narrower byteswap in the wider type.
+
+#. ``lib/CodeGen/SelectionDAG/LegalizeDAG.cpp``:
+
+ Add a case for your node in ``ExpandOp`` to teach the legalizer how to
+ perform the action represented by the new node on a value that has been split
+ into high and low halves. This case will be used to support your node with a
+ 64 bit operand on a 32 bit target.
+
+#. ``lib/CodeGen/SelectionDAG/DAGCombiner.cpp``:
+
+ If your node can be combined with itself, or other existing nodes in a
+ peephole-like fashion, add a visit function for it, and call that function
+ from. There are several good examples for simple combines you can do;
+ ``visitFABS`` and ``visitSRL`` are good starting places.
+
+#. ``lib/Target/PowerPC/PPCISelLowering.cpp``:
+
+ Each target has an implementation of the ``TargetLowering`` class, usually in
+ its own file (although some targets include it in the same file as the
+ DAGToDAGISel). The default behavior for a target is to assume that your new
+ node is legal for all types that are legal for that target. If this target
+ does not natively support your node, then tell the target to either Promote
+ it (if it is supported at a larger type) or Expand it. This will cause the
+ code you wrote in ``LegalizeOp`` above to decompose your new node into other
+ legal nodes for this target.
+
+#. ``lib/Target/TargetSelectionDAG.td``:
+
+ Most current targets supported by LLVM generate code using the DAGToDAG
+ method, where SelectionDAG nodes are pattern matched to target-specific
+ nodes, which represent individual instructions. In order for the targets to
+ match an instruction to your new node, you must add a def for that node to
+ the list in this file, with the appropriate type constraints. Look at
+ ``add``, ``bswap``, and ``fadd`` for examples.
+
+#. ``lib/Target/PowerPC/PPCInstrInfo.td``:
+
+ Each target has a tablegen file that describes the target's instruction set.
+ For targets that use the DAGToDAG instruction selection framework, add a
+ pattern for your new node that uses one or more target nodes. Documentation
+ for this is a bit sparse right now, but there are several decent examples.
+ See the patterns for ``rotl`` in ``PPCInstrInfo.td``.
+
+#. TODO: document complex patterns.
+
+#. ``llvm/test/Regression/CodeGen/*``:
+
+ Add test cases for your new node to the test suite.
+ ``llvm/test/Regression/CodeGen/X86/bswap.ll`` is a good example.
+
+Adding a new instruction
+========================
+
+.. warning::
+
+ Adding instructions changes the bitcode format, and it will take some effort
+ to maintain compatibility with the previous version. Only add an instruction
+ if it is absolutely necessary.
+
+#. ``llvm/include/llvm/Instruction.def``:
+
+ add a number for your instruction and an enum name
+
+#. ``llvm/include/llvm/Instructions.h``:
+
+ add a definition for the class that will represent your instruction
+
+#. ``llvm/include/llvm/Support/InstVisitor.h``:
+
+ add a prototype for a visitor to your new instruction type
+
+#. ``llvm/lib/AsmParser/Lexer.l``:
+
+ add a new token to parse your instruction from assembly text file
+
+#. ``llvm/lib/AsmParser/llvmAsmParser.y``:
+
+ add the grammar on how your instruction can be read and what it will
+ construct as a result
+
+#. ``llvm/lib/Bitcode/Reader/Reader.cpp``:
+
+ add a case for your instruction and how it will be parsed from bitcode
+
+#. ``llvm/lib/VMCore/Instruction.cpp``:
+
+ add a case for how your instruction will be printed out to assembly
+
+#. ``llvm/lib/VMCore/Instructions.cpp``:
+
+ implement the class you defined in ``llvm/include/llvm/Instructions.h``
+
+#. Test your instruction
+
+#. ``llvm/lib/Target/*``:
+
+ add support for your instruction to code generators, or add a lowering pass.
+
+#. ``llvm/test/Regression/*``:
+
+ add your test cases to the test suite.
+
+Also, you need to implement (or modify) any analyses or passes that you want to
+understand this new instruction.
+
+Adding a new type
+=================
+
+.. warning::
+
+ Adding new types changes the bitcode format, and will break compatibility with
+ currently-existing LLVM installations. Only add new types if it is absolutely
+ necessary.
+
+Adding a fundamental type
+-------------------------
+
+#. ``llvm/include/llvm/Type.h``:
+
+ add enum for the new type; add static ``Type*`` for this type
+
+#. ``llvm/lib/VMCore/Type.cpp``:
+
+ add mapping from ``TypeID`` => ``Type*``; initialize the static ``Type*``
+
+#. ``llvm/lib/AsmReader/Lexer.l``:
+
+ add ability to parse in the type from text assembly
+
+#. ``llvm/lib/AsmReader/llvmAsmParser.y``:
+
+ add a token for that type
+
+Adding a derived type
+---------------------
+
+#. ``llvm/include/llvm/Type.h``:
+
+ add enum for the new type; add a forward declaration of the type also
+
+#. ``llvm/include/llvm/DerivedTypes.h``:
+
+ add new class to represent new class in the hierarchy; add forward
+ declaration to the TypeMap value type
+
+#. ``llvm/lib/VMCore/Type.cpp``:
+
+ add support for derived type to:
+
+ .. code-block:: c++
+
+ std::string getTypeDescription(const Type &Ty,
+ std::vector &TypeStack)
+ bool TypesEqual(const Type *Ty, const Type *Ty2,
+ std::map &EqTypes)
+
+ add necessary member functions for type, and factory methods
+
+#. ``llvm/lib/AsmReader/Lexer.l``:
+
+ add ability to parse in the type from text assembly
+
+#. ``llvm/lib/BitCode/Writer/Writer.cpp``:
+
+ modify ``void BitcodeWriter::outputType(const Type *T)`` to serialize your
+ type
+
+#. ``llvm/lib/BitCode/Reader/Reader.cpp``:
+
+ modify ``const Type *BitcodeReader::ParseType()`` to read your data type
+
+#. ``llvm/lib/VMCore/AsmWriter.cpp``:
+
+ modify
+
+ .. code-block:: c++
+
+ void calcTypeName(const Type *Ty,
+ std::vector &TypeStack,
+ std::map &TypeNames,
+ std::string &Result)
+
+ to output the new derived type
diff --git a/docs/GarbageCollection.html b/docs/GarbageCollection.html
index 0b8f5889ac65..e12485167a72 100644
--- a/docs/GarbageCollection.html
+++ b/docs/GarbageCollection.html
@@ -1253,7 +1253,7 @@ methods. Here's a realistic example:
>#include "llvm/CodeGen/AsmPrinter.h"
#include "llvm/Function.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
#include "llvm/Target/TargetAsmInfo.h"
void MyGCPrinter::beginAssembly(std::ostream &OS, AsmPrinter &AP,
@@ -1266,7 +1266,7 @@ void MyGCPrinter::finishAssembly(std::ostream &OS, AsmPrinter &AP,
// Set up for emitting addresses.
const char *AddressDirective;
int AddressAlignLog;
- if (AP.TM.getTargetData()->getPointerSize() == sizeof(int32_t)) {
+ if (AP.TM.getDataLayout()->getPointerSize() == sizeof(int32_t)) {
AddressDirective = TAI.getData32bitsDirective();
AddressAlignLog = 2;
} else {
@@ -1382,7 +1382,7 @@ Fergus Henderson. International Symposium on Memory Management 2002.
Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2012-05-03 17:25:19 +0200 (Thu, 03 May 2012) $
+ Last modified: $Date: 2012-10-08 18:39:34 +0200 (Mon, 08 Oct 2012) $
-
-
- Getting Started with the LLVM System
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Welcome to LLVM! In order to get started, you first need to know some
-basic information.
-
-
First, LLVM comes in three pieces. The first piece is the LLVM
-suite. This contains all of the tools, libraries, and header files
-needed to use LLVM. It contains an assembler, disassembler, bitcode
-analyzer and bitcode optimizer. It also contains basic regression tests that
-can be used to test the LLVM tools and the Clang front end.
-
-
The second piece is the Clang front end.
-This component compiles C, C++, Objective C, and Objective C++ code into LLVM
-bitcode. Once compiled into LLVM bitcode, a program can be manipulated with the
-LLVM tools from the LLVM suite.
-
-
-
-There is a third, optional piece called Test Suite. It is a suite of programs
-with a testing harness that can be used to further test LLVM's functionality
-and performance.
-
-
-
-
-
-
-
-
-
-
-
The LLVM Getting Started documentation may be out of date. So, the Clang
-Getting Started page might
-also be a good place to start.
-
-
Here's the short story for getting up and running quickly with LLVM:
-
-
- Read the documentation.
- Read the documentation.
- Remember that you were warned twice about reading the documentation.
-
- Checkout LLVM:
-
- cd where-you-want-llvm-to-live
- svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
-
-
-
- Checkout Clang:
-
- cd where-you-want-llvm-to-live
- cd llvm/tools
- svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
-
-
-
- Checkout Compiler-RT:
-
- cd where-you-want-llvm-to-live
- cd llvm/projects
- svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk
- compiler-rt
-
-
-
- Get the Test Suite Source Code [Optional]
-
- cd where-you-want-llvm-to-live
- cd llvm/projects
- svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
-
-
-
- Configure and build LLVM and Clang:
-
- cd where-you-want-to-build-llvm
- mkdir build (for building without polluting the source dir)
- cd build
- ../llvm/configure [options]
- Some common options:
-
-
- --prefix=directory -
- Specify for directory the full pathname of where you
- want the LLVM tools and libraries to be installed (default
- /usr/local ).
-
-
-
- --enable-optimized -
- Compile with optimizations enabled (default is NO).
-
-
-
- --enable-assertions -
- Compile with assertion checks enabled (default is YES).
-
-
- make [-j] - The -j specifies the number of jobs (commands) to
- run simultaneously. This builds both LLVM and Clang for Debug+Asserts mode.
- The --enabled-optimized configure option is used to specify a Release build.
- make check-all -
- This run the regression tests to ensure everything is in working order.
- make update -
- This command is used to update all the svn repositories at once, rather then
- having to cd into the individual repositories and running
- svn update .
- It is also possible to use CMake instead of the makefiles. With CMake
- it is also possible to generate project files for several IDEs: Eclipse
- CDT4, CodeBlocks, Qt-Creator (use the CodeBlocks generator), KDevelop3.
- If you get an "internal compiler error (ICE)" or test failures, see
- below .
-
-
-
-
-
-
-
Consult the Getting Started with LLVM section for
-detailed information on configuring and compiling LLVM. See Setting Up Your Environment for tips that simplify
-working with the Clang front end and LLVM tools. Go to Program
-Layout to learn about the layout of the source code tree.
-
-
-
-
-
-
-
-
-
-
Before you begin to use the LLVM system, review the requirements given below.
-This may save you some trouble by knowing ahead of time what hardware and
-software you will need.
-
-
-
-
-
-
-
LLVM is known to work on the following platforms:
-
-
-
- OS
- Arch
- Compilers
-
-
- AuroraUX
- x861
- GCC
-
-
- Linux
- x861
- GCC
-
-
- Linux
- amd64
- GCC
-
-
- Solaris
- V9 (Ultrasparc)
- GCC
-
-
- FreeBSD
- x861
- GCC
-
-
- FreeBSD
- amd64
- GCC
-
-
- MacOS X2
- PowerPC
- GCC
-
-
- MacOS X2 ,9
- x86
- GCC
-
-
- Cygwin/Win32
- x861 ,8 ,
- 11
- GCC 3.4.X, binutils 2.20
-
-
- MinGW/Win32
- x861 ,6 ,
- 8 , 10 ,
- 11
- GCC 3.4.X, binutils 2.20
-
-
-
-
LLVM has partial support for the following platforms:
-
-
-
- OS
- Arch
- Compilers
-
-
- Windows
- x861
- Visual Studio 2008 or higher4 ,5
-
- AIX3 ,4
- PowerPC
- GCC
-
-
- Linux3 ,5
- PowerPC
- GCC
-
-
-
- Linux7
- Alpha
- GCC
-
-
- Linux7
- Itanium (IA-64)
- GCC
-
-
- HP-UX7
- Itanium (IA-64)
- HP aCC
-
-
- Windows x64
- x86-64
- mingw-w64's GCC-4.5.x12
-
-
-
-
Notes:
-
-
-
-
Note that you will need about 1-3 GB of space for a full LLVM build in Debug
-mode, depending on the system (it is so large because of all the debugging
-information and the fact that the libraries are statically linked into multiple
-tools). If you do not need many of the tools and you are space-conscious, you
-can pass ONLY_TOOLS="tools you need" to make. The Release build
-requires considerably less space.
-
-
The LLVM suite may compile on other platforms, but it is not
-guaranteed to do so. If compilation is successful, the LLVM utilities should be
-able to assemble, disassemble, analyze, and optimize LLVM bitcode. Code
-generation should work as well, although the generated native code may not work
-on your platform.
-
-
-
-
-
-
-
Compiling LLVM requires that you have several software packages
- installed. The table below lists those required packages. The Package column
- is the usual name for the software package that LLVM depends on. The Version
- column provides "known to work" versions of the package. The Notes column
- describes how LLVM uses the package and provides other details.
-
- Package Version Notes
-
-
- GNU Make
- 3.79, 3.79.1
- Makefile/build processor
-
-
-
- GCC
- 3.4.2
- C/C++ compiler1
-
-
-
- TeXinfo
- 4.5
- For building the CFE
-
-
-
- SVN
- ≥1.3
- Subversion access to LLVM2
-
-
-
-
-
- DejaGnu
- 1.4.2
- Automated test suite3
-
-
-
- tcl
- 8.3, 8.4
- Automated test suite3
-
-
-
- expect
- 5.38.0
- Automated test suite3
-
-
-
- perl
- ≥5.6.0
- Utilities
-
-
-
- GNU M4
- 1.4
- Macro processor for configuration4
-
-
-
- GNU Autoconf
- 2.60
- Configuration script builder4
-
-
-
- GNU Automake
- 1.9.6
- aclocal macro generator4
-
-
-
- libtool
- 1.5.22
- Shared library manager4
-
-
-
-
-
Notes:
-
-
-
Additionally, your compilation host is expected to have the usual
- plethora of Unix utilities. Specifically:
-
- ar - archive library builder
- bzip2* - bzip2 command for distribution generation
- bunzip2* - bunzip2 command for distribution checking
- chmod - change permissions on a file
- cat - output concatenation utility
- cp - copy files
- date - print the current date/time
- echo - print to standard output
- egrep - extended regular expression search utility
- find - find files/dirs in a file system
- grep - regular expression search utility
- gzip* - gzip command for distribution generation
- gunzip* - gunzip command for distribution checking
- install - install directories/files
- mkdir - create a directory
- mv - move (rename) files
- ranlib - symbol table builder for archive libraries
- rm - remove (delete) files and directories
- sed - stream editor for transforming output
- sh - Bourne shell for make build scripts
- tar - tape archive for distribution generation
- test - test things in file system
- unzip* - unzip command for distribution checking
- zip* - zip command for distribution generation
-
-
-
-
-
-
-
-
-
LLVM is very demanding of the host C++ compiler, and as such tends to expose
-bugs in the compiler. In particular, several versions of GCC crash when trying
-to compile LLVM. We routinely use GCC 4.2 (and higher) or Clang.
-Other versions of GCC will probably work as well. GCC versions listed
-here are known to not work. If you are using one of these versions, please try
-to upgrade your GCC to something more recent. If you run into a problem with a
-version of GCC not listed here, please let
-us know . Please use the "gcc -v " command to find out which version
-of GCC you are using.
-
-
-
GCC versions prior to 3.0 : GCC 2.96.x and before had several
-problems in the STL that effectively prevent it from compiling LLVM.
-
-
-
GCC 3.2.2 and 3.2.3 : These versions of GCC fails to compile LLVM with
-a bogus template error. This was fixed in later GCCs.
-
-
GCC 3.3.2 : This version of GCC suffered from a serious bug which causes it to crash in
-the "convert_from_eh_region_ranges_1 " GCC function.
-
-
Cygwin GCC 3.3.3 : The version of GCC 3.3.3 commonly shipped with
- Cygwin does not work.
-
SuSE GCC 3.3.3 : The version of GCC 3.3.3 shipped with SuSE 9.1 (and
- possibly others) does not compile LLVM correctly (it appears that exception
- handling is broken in some cases). Please download the FSF 3.3.3 or upgrade
- to a newer version of GCC.
-
GCC 3.4.0 on linux/x86 (32-bit) : GCC miscompiles portions of the
- code generator, causing an infinite loop in the llvm-gcc build when built
- with optimizations enabled (i.e. a release build).
-
GCC 3.4.2 on linux/x86 (32-bit) : GCC miscompiles portions of the
- code generator at -O3, as with 3.4.0. However gcc 3.4.2 (unlike 3.4.0)
- correctly compiles LLVM at -O2. A work around is to build release LLVM
- builds with "make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 ..."
-
GCC 3.4.x on X86-64/amd64 : GCC
- miscompiles portions of LLVM .
-
GCC 3.4.4 (CodeSourcery ARM 2005q3-2) : this compiler miscompiles LLVM
- when building with optimizations enabled. It appears to work with
- "make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O1 " or build a debug
- build.
-
IA-64 GCC 4.0.0 : The IA-64 version of GCC 4.0.0 is known to
- miscompile LLVM.
-
Apple Xcode 2.3 : GCC crashes when compiling LLVM at -O3 (which is the
- default with ENABLE_OPTIMIZED=1. To work around this, build with
- "ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2".
-
GCC 4.1.1 : GCC fails to build LLVM with template concept check errors
- compiling some files. At the time of this writing, GCC mainline (4.2)
- did not share the problem.
-
GCC 4.1.1 on X86-64/amd64 : GCC
- miscompiles portions of LLVM when compiling llvm itself into 64-bit
- code. LLVM will appear to mostly work but will be buggy, e.g. failing
- portions of its testsuite.
-
GCC 4.1.2 on OpenSUSE : Seg faults during libstdc++ build and on x86_64
-platforms compiling md5.c gets a mangled constant.
-
GCC 4.1.2 (20061115 (prerelease) (Debian 4.1.1-21)) on Debian : Appears
-to miscompile parts of LLVM 2.4. One symptom is ValueSymbolTable complaining
-about symbols remaining in the table on destruction.
-
GCC 4.1.2 20071124 (Red Hat 4.1.2-42) : Suffers from the same symptoms
-as the previous one. It appears to work with ENABLE_OPTIMIZED=0 (the default).
-
Cygwin GCC 4.3.2 20080827 (beta) 2 :
- Users reported various problems related
- with link errors when using this GCC version.
-
Debian GCC 4.3.2 on X86 : Crashes building some files in LLVM 2.6.
-
GCC 4.3.3 (Debian 4.3.3-10) on ARM : Miscompiles parts of LLVM 2.6
-when optimizations are turned on. The symptom is an infinite loop in
-FoldingSetImpl::RemoveNode while running the code generator.
-
SUSE 11 GCC 4.3.4 : Miscompiles LLVM, causing crashes in ValueHandle logic.
-
GCC 4.3.5 and GCC 4.4.5 on ARM : These can miscompile value >>
-1 even at -O0. A test failure in test/Assembler/alignstack.ll is
-one symptom of the problem.
-
GNU ld 2.16.X . Some 2.16.X versions of the ld linker will produce very
-long warning messages complaining that some ".gnu.linkonce.t.*" symbol was
-defined in a discarded section. You can safely ignore these messages as they are
-erroneous and the linkage is correct. These messages disappear using ld
-2.17.
-
-
GNU binutils 2.17 : Binutils 2.17 contains a bug which
-causes huge link times (minutes instead of seconds) when building LLVM. We
-recommend upgrading to a newer version (2.17.50.0.4 or later).
-
-
GNU Binutils 2.19.1 Gold : This version of Gold contained
-a bug
-which causes intermittent failures when building LLVM with position independent
-code. The symptom is an error about cyclic dependencies. We recommend
-upgrading to a newer version of Gold.
-
-
-
-
-
-
-
-
-
-
-
-
The remainder of this guide is meant to get you up and running with
-LLVM and to give you some basic information about the LLVM environment.
-
-
The later sections of this guide describe the general layout of the LLVM source tree, a simple example using the LLVM tool chain, and links to find more information about LLVM or to get
-help via e-mail.
-
-
-
-
-
-
-
Throughout this manual, the following names are used to denote paths
-specific to the local system and working environment. These are not
-environment variables you need to set but just strings used in the rest
-of this document below . In any of the examples below, simply replace
-each of these names with the appropriate pathname on your local system.
-All these paths are absolute:
-
-
- SRC_ROOT
-
- This is the top level directory of the LLVM source tree.
-
-
- OBJ_ROOT
-
- This is the top level directory of the LLVM object tree (i.e. the
- tree where object files and compiled programs will be placed. It
- can be the same as SRC_ROOT).
-
-
-
-
-
-
-
-
-
-
-
-
-In order to compile and use LLVM, you may need to set some environment
-variables.
-
-
- LLVM_LIB_SEARCH_PATH =/path/to/your/bitcode/libs
- [Optional] This environment variable helps LLVM linking tools find the
- locations of your bitcode libraries. It is provided only as a
- convenience since you can specify the paths using the -L options of the
- tools and the C/C++ front-end will automatically use the bitcode files
- installed in its
- lib directory.
-
-
-
-
-
-
-
-
-
-
-If you have the LLVM distribution, you will need to unpack it before you
-can begin to compile it. LLVM is distributed as a set of two files: the LLVM
-suite and the LLVM GCC front end compiled for your platform. There is an
-additional test suite that is optional. Each file is a TAR archive that is
-compressed with the gzip program.
-
-
-
The files are as follows, with x.y marking the version number:
-
- llvm-x.y.tar.gz
- Source release for the LLVM libraries and tools.
-
- llvm-test-x.y.tar.gz
- Source release for the LLVM test-suite.
-
- llvm-gcc-4.2-x.y.source.tar.gz
- Source release of the llvm-gcc-4.2 front end. See README.LLVM in the root
- directory for build instructions.
-
- llvm-gcc-4.2-x.y-platform.tar.gz
- Binary release of the llvm-gcc-4.2 front end for a specific platform.
-
-
-
-
-
-
-
-
-
-
-
If you have access to our Subversion repository, you can get a fresh copy of
-the entire source code. All you need to do is check it out from Subversion as
-follows:
-
-
- cd where-you-want-llvm-to-live
- Read-Only: svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
- Read-Write:svn co https://user@llvm.org/svn/llvm-project/llvm/trunk
- llvm
-
-
-
-
This will create an 'llvm ' directory in the current
-directory and fully populate it with the LLVM source code, Makefiles,
-test directories, and local copies of documentation files.
-
-
If you want to get a specific release (as opposed to the most recent
-revision), you can checkout it from the 'tags ' directory (instead of
-'trunk '). The following releases are located in the following
-subdirectories of the 'tags ' directory:
-
-
-Release 3.1: RELEASE_31/final
-Release 3.0: RELEASE_30/final
-Release 2.9: RELEASE_29/final
-Release 2.8: RELEASE_28
-Release 2.7: RELEASE_27
-Release 2.6: RELEASE_26
-Release 2.5: RELEASE_25
-Release 2.4: RELEASE_24
-Release 2.3: RELEASE_23
-Release 2.2: RELEASE_22
-Release 2.1: RELEASE_21
-Release 2.0: RELEASE_20
-Release 1.9: RELEASE_19
-Release 1.8: RELEASE_18
-Release 1.7: RELEASE_17
-Release 1.6: RELEASE_16
-Release 1.5: RELEASE_15
-Release 1.4: RELEASE_14
-Release 1.3: RELEASE_13
-Release 1.2: RELEASE_12
-Release 1.1: RELEASE_11
-Release 1.0: RELEASE_1
-
-
-
If you would like to get the LLVM test suite (a separate package as of 1.4),
-you get it from the Subversion repository:
-
-
-
-% cd llvm/projects
-% svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
-
-
-
-
By placing it in the llvm/projects , it will be automatically
-configured by the LLVM configure script as well as automatically updated when
-you run svn update .
-
-
-
-
-
-
-
-
-
GIT mirrors are available for a number of LLVM subprojects. These mirrors
- sync automatically with each Subversion commit and contain all necessary
- git-svn marks (so, you can recreate git-svn metadata locally). Note that right
- now mirrors reflect only trunk for each project. You can do the
- read-only GIT clone of LLVM via:
-
-
-git clone http://llvm.org/git/llvm.git
-
-
-
If you want to check out clang too, run:
-
-
-git clone http://llvm.org/git/llvm.git
-cd llvm/tools
-git clone http://llvm.org/git/clang.git
-
-
-
-Since the upstream repository is in Subversion, you should use
-"git pull --rebase"
-instead of "git pull" to avoid generating a non-linear
-history in your clone.
-To configure "git pull" to pass --rebase by default
-on the master branch, run the following command:
-
-
-
-git config branch.master.rebase true
-
-
-
Sending patches with Git
-
-
-Please read Developer Policy , too.
-
-
-
-Assume master points the upstream and mybranch points your
-working branch, and mybranch is rebased onto master .
-At first you may check sanity of whitespaces:
-
-
-
-git diff --check master..mybranch
-
-
-
-The easiest way to generate a patch is as below:
-
-
-
-git diff master..mybranch > /path/to/mybranch.diff
-
-
-
-It is a little different from svn-generated diff. git-diff-generated diff has
-prefixes like a/ and b/ . Don't worry, most developers might
-know it could be accepted with patch -p1 -N .
-
-
-
-But you may generate patchset with git-format-patch. It generates
-by-each-commit patchset. To generate patch files to attach to your article:
-
-
-
-git format-patch --no-attach master..mybranch -o /path/to/your/patchset
-
-
-
-If you would like to send patches directly, you may use git-send-email or
-git-imap-send. Here is an example to generate the patchset in Gmail's [Drafts].
-
-
-
-git format-patch --attach master..mybranch --stdout | git imap-send
-
-
-
-Then, your .git/config should have [imap] sections.
-
-
-
-[imap]
- host = imaps://imap.gmail.com
- user = your.gmail.account @gmail.com
- pass = himitsu!
- port = 993
- sslverify = false
-; in English
- folder = "[Gmail]/Drafts"
-; example for Japanese, "Modified UTF-7" encoded.
- folder = "[Gmail]/&Tgtm+DBN-"
-; example for Traditional Chinese
- folder = "[Gmail]/&g0l6Pw-"
-
-
-
-
-
For developers to work with git-svn
-
-
-
To set up clone from which you can submit code using
- git-svn , run:
-
-
-git clone http://llvm.org/git/llvm.git
-cd llvm
-git svn init https://llvm.org/svn/llvm-project/llvm/trunk --username=<username>
-git config svn-remote.svn.fetch :refs/remotes/origin/master
-git svn rebase -l # -l avoids fetching ahead of the git mirror.
-
-# If you have clang too:
-cd tools
-git clone http://llvm.org/git/clang.git
-cd clang
-git svn init https://llvm.org/svn/llvm-project/cfe/trunk --username=<username>
-git config svn-remote.svn.fetch :refs/remotes/origin/master
-git svn rebase -l
-
-
-
To update this clone without generating git-svn tags that conflict
-with the upstream git repo, run:
-
-
-git fetch && (cd tools/clang && git fetch) # Get matching revisions of both trees.
-git checkout master
-git svn rebase -l
-(cd tools/clang &&
- git checkout master &&
- git svn rebase -l)
-
-
-
This leaves your working directories on their master branches, so
-you'll need to checkout each working branch individually and
-rebase it on top of its parent branch. (Note: This script is
-intended for relative newbies to git. If you have more experience,
-you can likely improve on it.)
-
-
The git-svn metadata can get out of sync after you mess around with
-branches and dcommit
. When that happens, git svn
-dcommit
stops working, complaining about files with uncommitted
-changes. The fix is to rebuild the metadata:
-
-
-rm -rf .git/svn
-git svn rebase -l
-
-
-
-
-
-
-
-
-
-
-
-
Once checked out from the Subversion repository, the LLVM suite source
- code must be
-configured via the configure script. This script sets variables in the
-various *.in files, most notably llvm/Makefile.config and
-llvm/include/Config/config.h . It also populates OBJ_ROOT with
-the Makefiles needed to begin building LLVM.
-
-
The following environment variables are used by the configure
-script to configure the build system:
-
-
- Variable Purpose
-
- CC
- Tells configure which C compiler to use. By default,
- configure will look for the first GCC C compiler in
- PATH . Use this variable to override
- configure 's default behavior.
-
-
- CXX
- Tells configure which C++ compiler to use. By default,
- configure will look for the first GCC C++ compiler in
- PATH . Use this variable to override
- configure 's default behavior.
-
-
-
-
The following options can be used to set or enable LLVM specific options:
-
-
- --enable-optimized
-
- Enables optimized compilation (debugging symbols are removed
- and GCC optimization flags are enabled). Note that this is the default
- setting if you are using the LLVM distribution. The default behavior
- of an Subversion checkout is to use an unoptimized build (also known as a
- debug build).
-
-
- --enable-debug-runtime
-
- Enables debug symbols in the runtime libraries. The default is to strip
- debug symbols from the runtime libraries.
-
- --enable-jit
-
- Compile the Just In Time (JIT) compiler functionality. This is not
- available
- on all platforms. The default is dependent on platform, so it is best
- to explicitly enable it if you want it.
-
-
- --enable-targets= target-option
- Controls which targets will be built and linked into llc. The default
- value for target_options is "all" which builds and links all
- available targets. The value "host-only" can be specified to build only a
- native compiler (no cross-compiler targets available). The "native" target is
- selected as the target of the build host. You can also specify a comma
- separated list of target names that you want available in llc. The target
- names use all lower case. The current set of targets is:
- arm, cpp, hexagon, mblaze, mips, mipsel, msp430, powerpc, ptx, sparc, spu, x86, x86_64, xcore .
-
- --enable-doxygen
- Look for the doxygen program and enable construction of doxygen based
- documentation from the source code. This is disabled by default because
- generating the documentation can take a long time and producess 100s of
- megabytes of output.
- --with-udis86
- LLVM can use external disassembler library for various purposes (now it's
- used only for examining code produced by JIT). This option will enable usage
- of udis86 x86 (both 32 and 64
- bits) disassembler library.
-
-
-
To configure LLVM, follow these steps:
-
-
- Change directory into the object root directory:
-
-
-
- Run the configure script located in the LLVM source
- tree:
-
-
-
% SRC_ROOT /configure --prefix=/install/path [other options]
-
-
-
-
-
-
-
-
-
-
-
Once you have configured LLVM, you can build it. There are three types of
-builds:
-
-
- Debug Builds
-
- These builds are the default when one is using an Subversion checkout and
- types gmake (unless the --enable-optimized option was
- used during configuration). The build system will compile the tools and
- libraries with debugging information. To get a Debug Build using the
- LLVM distribution the --disable-optimized option must be passed
- to configure .
-
-
- Release (Optimized) Builds
-
- These builds are enabled with the --enable-optimized option to
- configure or by specifying ENABLE_OPTIMIZED=1 on the
- gmake command line. For these builds, the build system will
- compile the tools and libraries with GCC optimizations enabled and strip
- debugging information from the libraries and executables it generates.
- Note that Release Builds are default when using an LLVM distribution.
-
-
- Profile Builds
-
- These builds are for use with profiling. They compile profiling
- information into the code for use with programs like gprof .
- Profile builds must be started by specifying ENABLE_PROFILING=1
- on the gmake command line.
-
-
-
Once you have LLVM configured, you can build it by entering the
-OBJ_ROOT directory and issuing the following command:
-
-
-
-
If the build fails, please check here to see if you
-are using a version of GCC that is known not to compile LLVM.
-
-
-If you have multiple processors in your machine, you may wish to use some of
-the parallel build options provided by GNU Make. For example, you could use the
-command:
-
-
-
-
There are several special targets which are useful when working with the LLVM
-source code:
-
-
- gmake clean
-
- Removes all files generated by the build. This includes object files,
- generated C/C++ files, libraries, and executables.
-
-
- gmake dist-clean
-
- Removes everything that gmake clean does, but also removes files
- generated by configure . It attempts to return the source tree to the
- original state in which it was shipped.
-
-
- gmake install
-
- Installs LLVM header files, libraries, tools, and documentation in a
- hierarchy
- under $PREFIX, specified with ./configure --prefix=[dir] , which
- defaults to /usr/local .
-
-
- gmake -C runtime install-bytecode
-
- Assuming you built LLVM into $OBJDIR, when this command is run, it will
- install bitcode libraries into the GCC front end's bitcode library
- directory. If you need to update your bitcode libraries,
- this is the target to use once you've built them.
-
-
-
-
Please see the Makefile Guide for further
-details on these make targets and descriptions of other targets
-available.
-
-
It is also possible to override default values from configure by
-declaring variables on the command line. The following are some examples:
-
-
- gmake ENABLE_OPTIMIZED=1
-
- Perform a Release (Optimized) build.
-
-
- gmake ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1
-
- Perform a Release (Optimized) build without assertions enabled.
-
-
- gmake ENABLE_OPTIMIZED=0
-
- Perform a Debug build.
-
-
- gmake ENABLE_PROFILING=1
-
- Perform a Profiling build.
-
-
- gmake VERBOSE=1
-
- Print what gmake is doing on standard output.
-
-
- gmake TOOL_VERBOSE=1
- Ask each tool invoked by the makefiles to print out what it is doing on
- the standard output. This also implies VERBOSE=1 .
-
-
-
-
Every directory in the LLVM object tree includes a Makefile to build
-it and any subdirectories that it contains. Entering any directory inside the
-LLVM object tree and typing gmake should rebuild anything in or below
-that directory that is out of date.
-
-
-
-
-
-
-
-
It is possible to cross-compile LLVM itself. That is, you can create LLVM
- executables and libraries to be hosted on a platform different from the
- platform where they are build (a Canadian Cross build). To configure a
- cross-compile, supply the configure script with --build and
- --host options that are different. The values of these options must
- be legal target triples that your GCC compiler supports.
-
-
The result of such a build is executables that are not runnable on
- on the build host (--build option) but can be executed on the compile host
- (--host option).
-
-
-
-
-
-
-
-
The LLVM build system is capable of sharing a single LLVM source tree among
-several LLVM builds. Hence, it is possible to build LLVM for several different
-platforms or configurations using the same source tree.
-
-
This is accomplished in the typical autoconf manner:
-
-
-
-
The LLVM build will place files underneath OBJ_ROOT in directories
-named after the build type:
-
-
- Debug Builds with assertions enabled (the default)
-
-
- Tools
- OBJ_ROOT /Debug+Asserts/bin
- Libraries
- OBJ_ROOT /Debug+Asserts/lib
-
-
-
- Release Builds
-
-
- Tools
- OBJ_ROOT /Release/bin
- Libraries
- OBJ_ROOT /Release/lib
-
-
-
- Profile Builds
-
-
- Tools
- OBJ_ROOT /Profile/bin
- Libraries
- OBJ_ROOT /Profile/lib
-
-
-
-
-
-
-
-
-
-
-
-If you're running on a Linux system that supports the "binfmt_misc "
-module, and you have root access on the system, you can set your system up to
-execute LLVM bitcode files directly. To do this, use commands like this (the
-first command may not be required if you are already using the module):
-
-
-
-$ mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
-$ echo ':llvm:M::BC::/path/to/lli:' > /proc/sys/fs/binfmt_misc/register
-$ chmod u+x hello.bc (if needed)
-$ ./hello.bc
-
-
-
-
-This allows you to execute LLVM bitcode files directly. On Debian, you
-can also use this command instead of the 'echo' command above:
-
-
-
-
-$ sudo update-binfmts --install llvm /path/to/lli --magic 'BC'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
One useful source of information about the LLVM source base is the LLVM doxygen documentation available at http://llvm.org/doxygen/ .
-The following is a brief introduction to code layout:
-
-
-
-
-
-
This directory contains some simple examples of how to use the LLVM IR and
- JIT.
-
-
-
-
-
-
-
-
This directory contains public header files exported from the LLVM
-library. The three main subdirectories of this directory are:
-
-
- llvm/include/llvm
- This directory contains all of the LLVM specific header files. This
- directory also has subdirectories for different portions of LLVM:
- Analysis , CodeGen , Target , Transforms ,
- etc...
-
- llvm/include/llvm/Support
- This directory contains generic support libraries that are provided with
- LLVM but not necessarily specific to LLVM. For example, some C++ STL utilities
- and a Command Line option processing library store their header files here.
-
-
- llvm/include/llvm/Config
- This directory contains header files configured by the configure
- script. They wrap "standard" UNIX and C header files. Source code can
- include these header files which automatically take care of the conditional
- #includes that the configure script generates.
-
-
-
-
-
-
-
-
-
This directory contains most of the source files of the LLVM system. In LLVM,
-almost all code exists in libraries, making it very easy to share code among the
-different tools .
-
-
- llvm/lib/VMCore/
- This directory holds the core LLVM source files that implement core
- classes like Instruction and BasicBlock.
-
- llvm/lib/AsmParser/
- This directory holds the source code for the LLVM assembly language parser
- library.
-
- llvm/lib/BitCode/
- This directory holds code for reading and write LLVM bitcode.
-
- llvm/lib/Analysis/ This directory contains a variety of
- different program analyses, such as Dominator Information, Call Graphs,
- Induction Variables, Interval Identification, Natural Loop Identification,
- etc.
-
- llvm/lib/Transforms/
- This directory contains the source code for the LLVM to LLVM program
- transformations, such as Aggressive Dead Code Elimination, Sparse Conditional
- Constant Propagation, Inlining, Loop Invariant Code Motion, Dead Global
- Elimination, and many others.
-
- llvm/lib/Target/
- This directory contains files that describe various target architectures
- for code generation. For example, the llvm/lib/Target/X86
- directory holds the X86 machine description while
- llvm/lib/Target/ARM implements the ARM backend.
-
- llvm/lib/CodeGen/
- This directory contains the major parts of the code generator: Instruction
- Selector, Instruction Scheduling, and Register Allocation.
-
- llvm/lib/MC/
- (FIXME: T.B.D.)
-
-
- llvm/lib/Debugger/
- This directory contains the source level debugger library that makes
- it possible to instrument LLVM programs so that a debugger could identify
- source code locations at which the program is executing.
-
- llvm/lib/ExecutionEngine/
- This directory contains libraries for executing LLVM bitcode directly
- at runtime in both interpreted and JIT compiled fashions.
-
- llvm/lib/Support/
- This directory contains the source code that corresponds to the header
- files located in llvm/include/ADT/
- and llvm/include/Support/ .
-
-
-
-
-
-
-
-
-
This directory contains projects that are not strictly part of LLVM but are
- shipped with LLVM. This is also the directory where you should create your own
- LLVM-based projects. See llvm/projects/sample for an example of how
- to set up your own project.
-
-
-
-
-
-
-
-
This directory contains libraries which are compiled into LLVM bitcode and
-used when linking programs with the Clang front end. Most of these libraries are
-skeleton versions of real libraries; for example, libc is a stripped down
-version of glibc.
-
-
Unlike the rest of the LLVM suite, this directory needs the LLVM GCC front
-end to compile.
-
-
-
-
-
-
-
-
This directory contains feature and regression tests and other basic sanity
- checks on the LLVM infrastructure. These are intended to run quickly and cover
- a lot of territory without being exhaustive.
-
-
-
-
-
-
-
This is not a directory in the normal llvm module; it is a separate
- Subversion
- module that must be checked out (usually to projects/test-suite ).
- This
- module contains a comprehensive correctness, performance, and benchmarking
- test
- suite for LLVM. It is a separate Subversion module because not every LLVM
- user is
- interested in downloading or building such a comprehensive test suite. For
- further details on this test suite, please see the
- Testing Guide document.
-
-
-
-
-
-
-
-
The tools directory contains the executables built out of the
-libraries above, which form the main part of the user interface. You can
-always get help for a tool by typing tool_name -help . The
-following is a brief introduction to the most important tools. More detailed
-information is in the Command Guide .
-
-
-
- bugpoint
- bugpoint is used to debug
- optimization passes or code generation backends by narrowing down the
- given test case to the minimum number of passes and/or instructions that
- still cause a problem, whether it is a crash or miscompilation. See HowToSubmitABug.html for more information
- on using bugpoint .
-
- llvm-ar
- The archiver produces an archive containing
- the given LLVM bitcode files, optionally with an index for faster
- lookup.
-
- llvm-as
- The assembler transforms the human readable LLVM assembly to LLVM
- bitcode.
-
- llvm-dis
- The disassembler transforms the LLVM bitcode to human readable
- LLVM assembly.
-
- llvm-link
- llvm-link , not surprisingly, links multiple LLVM modules into
- a single program.
-
- lli
- lli is the LLVM interpreter, which
- can directly execute LLVM bitcode (although very slowly...). For architectures
- that support it (currently x86, Sparc, and PowerPC), by default, lli
- will function as a Just-In-Time compiler (if the functionality was compiled
- in), and will execute the code much faster than the interpreter.
-
- llc
- llc is the LLVM backend compiler, which
- translates LLVM bitcode to a native code assembly file or to C code (with
- the -march=c option).
-
- llvm-gcc
- llvm-gcc is a GCC-based C frontend that has been retargeted to
- use LLVM as its backend instead of GCC's RTL backend. It can also emit LLVM
- bitcode or assembly (with the -emit-llvm option) instead of the
- usual machine code output. It works just like any other GCC compiler,
- taking the typical -c, -S, -E, -o options that are typically used.
- Additionally, the source code for llvm-gcc is available as a
- separate Subversion module.
-
- opt
- opt reads LLVM bitcode, applies a series of LLVM to LLVM
- transformations (which are specified on the command line), and then outputs
- the resultant bitcode. The 'opt -help ' command is a good way to
- get a list of the program transformations available in LLVM.
- opt can also be used to run a specific analysis on an input
- LLVM bitcode file and print out the results. It is primarily useful for
- debugging analyses, or familiarizing yourself with what an analysis does.
-
-
-
-
-
-
-
-
-
This directory contains utilities for working with LLVM source code, and some
-of the utilities are actually required as part of the build process because they
-are code generators for parts of LLVM infrastructure.
-
-
- codegen-diff codegen-diff is a script
- that finds differences between code that LLC generates and code that LLI
- generates. This is a useful tool if you are debugging one of them,
- assuming that the other generates correct output. For the full user
- manual, run `perldoc codegen-diff' .
-
- emacs/ The emacs directory contains
- syntax-highlighting files which will work with Emacs and XEmacs editors,
- providing syntax highlighting support for LLVM assembly files and TableGen
- description files. For information on how to use the syntax files, consult
- the README file in that directory.
-
- getsrcs.sh The getsrcs.sh script finds
- and outputs all non-generated source files, which is useful if one wishes
- to do a lot of development across directories and does not want to
- individually find each file. One way to use it is to run, for example:
- xemacs `utils/getsources.sh` from the top of your LLVM source
- tree.
-
- llvmgrep
- This little tool performs an "egrep -H -n" on each source file in LLVM and
- passes to it a regular expression provided on llvmgrep 's command
- line. This is a very efficient way of searching the source base for a
- particular regular expression.
-
- makellvm The makellvm script compiles all
- files in the current directory and then compiles and links the tool that
- is the first argument. For example, assuming you are in the directory
- llvm/lib/Target/Sparc , if makellvm is in your path,
- simply running makellvm llc will make a build of the current
- directory, switch to directory llvm/tools/llc and build it,
- causing a re-linking of LLC.
-
- TableGen/ The TableGen directory contains
- the tool used to generate register descriptions, instruction set
- descriptions, and even assemblers from common TableGen description
- files.
-
- vim/ The vim directory contains
- syntax-highlighting files which will work with the VIM editor, providing
- syntax highlighting support for LLVM assembly files and TableGen
- description files. For information on how to use the syntax files, consult
- the README file in that directory.
-
-
-
-
-
-
-
-
-
-
-
-
-
This section gives an example of using LLVM with the Clang front end.
-
-
-
-
-
-
-
- First, create a simple C file, name it 'hello.c':
-
-
-
-#include <stdio.h>
-
-int main() {
- printf("hello world\n");
- return 0;
-}
-
-
- Next, compile the C file into a native executable:
-
-
-
- Note that clang works just like GCC by default. The standard -S and
- -c arguments work as usual (producing a native .s or .o file,
- respectively).
-
- Next, compile the C file into a LLVM bitcode file:
-
-
-
% clang -O3 -emit-llvm hello.c -c -o hello.bc
-
- The -emit-llvm option can be used with the -S or -c options to emit an
- LLVM ".ll" or ".bc" file (respectively) for the code. This allows you
- to use the standard LLVM tools on
- the bitcode file.
-
- Run the program in both forms. To run the program, use:
-
-
-
- and
-
-
-
- The second examples shows how to invoke the LLVM JIT, lli .
-
- Use the llvm-dis utility to take a look at the LLVM assembly
- code:
-
-
-
llvm-dis < hello.bc | less
-
-
- Compile the program to native assembly using the LLC code
- generator:
-
- % llc hello.bc -o hello.s
-
- Assemble the native assembly language file into a program:
-
-
-
-Solaris: % /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native
-
-Others: % gcc hello.s -o hello.native
-
-
-
- Execute the native code program:
-
-
-
- Note that using clang to compile directly to native code (i.e. when
- the -emit-llvm option is not present) does steps 6/7/8 for you.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
If you are having problems building or using LLVM, or if you have any other
-general questions about LLVM, please consult the Frequently
-Asked Questions page.
-
-
-
-
-
-
-
-
-
-
This document is just an introduction on how to use LLVM to do
-some simple things... there are many more interesting and complicated things
-that you can do that aren't documented here (but we'll gladly accept a patch
-if you want to write something up!). For more information about LLVM, check
-out:
-
-
-
-
-
-
-
-
-
-
-
-
- Chris Lattner
- Reid Spencer
- The LLVM Compiler Infrastructure
- Last modified: $Date: 2012-07-23 10:51:15 +0200 (Mon, 23 Jul 2012) $
-
-
diff --git a/docs/GettingStarted.html b/docs/GettingStarted.html
deleted file mode 100644
index 61335afd8329..000000000000
--- a/docs/GettingStarted.html
+++ /dev/null
@@ -1,1760 +0,0 @@
-
-
-