[llvm-branch-commits] [llvm-branch] r172541 [1/8] - in /llvm/branches/AMDILBackend: ./ autoconf/ bindings/ocaml/executionengine/ bindings/ocaml/llvm/ bindings/ocaml/target/ cmake/ cmake/modules/ cmake/platforms/ docs/ docs/CommandGuide/ docs/_themes/ docs/_themes/llvm-theme/ docs/_themes/llvm-theme/static/ docs/llvm-theme/ docs/llvm-theme/static/ docs/tutorial/ examples/ExceptionDemo/ examples/Fibonacci/ examples/Kaleidoscope/Chapter4/ examples/Kaleidoscope/Chapter5/ examples/Kaleidoscope/Chapter6/ examples/Kaleidoscope/Chapt...

Richard Relph Richard.Relph at amd.com
Tue Jan 15 09:16:26 PST 2013


Author: rrelph
Date: Tue Jan 15 11:16:16 2013
New Revision: 172541

URL: http://llvm.org/viewvc/llvm-project?rev=172541&view=rev
Log:
Upgrade AMDILBackend branch to LLVM 3.2

Added:
    llvm/branches/AMDILBackend/cmake/platforms/
      - copied from r167701, llvm/trunk/cmake/platforms/
    llvm/branches/AMDILBackend/cmake/platforms/Android.cmake
      - copied unchanged from r167701, llvm/trunk/cmake/platforms/Android.cmake
    llvm/branches/AMDILBackend/docs/CompilerWriterInfo.rst
      - copied unchanged from r167701, llvm/trunk/docs/CompilerWriterInfo.rst
    llvm/branches/AMDILBackend/docs/DebuggingJITedCode.rst
      - copied unchanged from r167701, llvm/trunk/docs/DebuggingJITedCode.rst
    llvm/branches/AMDILBackend/docs/ExtendingLLVM.rst
      - copied unchanged from r167701, llvm/trunk/docs/ExtendingLLVM.rst
    llvm/branches/AMDILBackend/docs/GettingStarted.rst
      - copied unchanged from r167701, llvm/trunk/docs/GettingStarted.rst
    llvm/branches/AMDILBackend/docs/GoldPlugin.rst
      - copied unchanged from r167701, llvm/trunk/docs/GoldPlugin.rst
    llvm/branches/AMDILBackend/docs/HowToAddABuilder.rst
      - copied unchanged from r167701, llvm/trunk/docs/HowToAddABuilder.rst
    llvm/branches/AMDILBackend/docs/HowToBuildOnARM.rst
      - copied unchanged from r167701, llvm/trunk/docs/HowToBuildOnARM.rst
    llvm/branches/AMDILBackend/docs/HowToSetUpLLVMStyleRTTI.rst
      - copied unchanged from r167701, llvm/trunk/docs/HowToSetUpLLVMStyleRTTI.rst
    llvm/branches/AMDILBackend/docs/HowToSubmitABug.rst
      - copied unchanged from r167701, llvm/trunk/docs/HowToSubmitABug.rst
    llvm/branches/AMDILBackend/docs/HowToUseInstrMappings.rst
      - copied unchanged from r167701, llvm/trunk/docs/HowToUseInstrMappings.rst
    llvm/branches/AMDILBackend/docs/MarkedUpDisassembly.rst
      - copied unchanged from r167701, llvm/trunk/docs/MarkedUpDisassembly.rst
    llvm/branches/AMDILBackend/docs/Phabricator.rst
      - copied unchanged from r167701, llvm/trunk/docs/Phabricator.rst
    llvm/branches/AMDILBackend/docs/SphinxQuickstartTemplate.rst
      - copied unchanged from r167701, llvm/trunk/docs/SphinxQuickstartTemplate.rst
    llvm/branches/AMDILBackend/docs/_themes/
      - copied from r167701, llvm/trunk/docs/_themes/
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/
      - copied from r167701, llvm/trunk/docs/_themes/llvm-theme/
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/layout.html
      - copied unchanged from r167701, llvm/trunk/docs/_themes/llvm-theme/layout.html
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/static/
      - copied from r167701, llvm/trunk/docs/_themes/llvm-theme/static/
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/static/contents.png
      - copied unchanged from r167701, llvm/trunk/docs/_themes/llvm-theme/static/contents.png
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/static/llvm-theme.css
      - copied unchanged from r167701, llvm/trunk/docs/_themes/llvm-theme/static/llvm-theme.css
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/static/logo.png
      - copied unchanged from r167701, llvm/trunk/docs/_themes/llvm-theme/static/logo.png
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/static/navigation.png
      - copied unchanged from r167701, llvm/trunk/docs/_themes/llvm-theme/static/navigation.png
    llvm/branches/AMDILBackend/docs/_themes/llvm-theme/theme.conf
      - copied unchanged from r167701, llvm/trunk/docs/_themes/llvm-theme/theme.conf
    llvm/branches/AMDILBackend/include/llvm/ADT/MapVector.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/ADT/MapVector.h
    llvm/branches/AMDILBackend/include/llvm/AddressingMode.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/AddressingMode.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/DependenceAnalysis.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Analysis/DependenceAnalysis.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/ProfileDataLoader.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Analysis/ProfileDataLoader.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/ProfileDataTypes.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Analysis/ProfileDataTypes.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/CommandFlags.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/CodeGen/CommandFlags.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachinePostDominators.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/CodeGen/MachinePostDominators.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAGILP.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/CodeGen/ScheduleDAGILP.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/TargetSchedule.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/CodeGen/TargetSchedule.h
    llvm/branches/AMDILBackend/include/llvm/DataLayout.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/DataLayout.h
    llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/ObjectBuffer.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/ExecutionEngine/ObjectBuffer.h
    llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/ObjectImage.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/ExecutionEngine/ObjectImage.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCFixedLenDisassembler.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/MC/MCFixedLenDisassembler.h
    llvm/branches/AMDILBackend/include/llvm/Object/RelocVisitor.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Object/RelocVisitor.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetTransformImpl.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Target/TargetTransformImpl.h
    llvm/branches/AMDILBackend/include/llvm/TargetTransformInfo.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/TargetTransformInfo.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/BypassSlowDivision.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Transforms/Utils/BypassSlowDivision.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/IntegerDivision.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Transforms/Utils/IntegerDivision.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/SimplifyLibCalls.h
      - copied unchanged from r167701, llvm/trunk/include/llvm/Transforms/Utils/SimplifyLibCalls.h
    llvm/branches/AMDILBackend/lib/Analysis/CostModel.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Analysis/CostModel.cpp
    llvm/branches/AMDILBackend/lib/Analysis/DependenceAnalysis.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Analysis/DependenceAnalysis.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ProfileDataLoader.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Analysis/ProfileDataLoader.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ProfileDataLoaderPass.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Analysis/ProfileDataLoaderPass.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachinePostDominators.cpp
      - copied unchanged from r167701, llvm/trunk/lib/CodeGen/MachinePostDominators.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/StackColoring.cpp
      - copied unchanged from r167701, llvm/trunk/lib/CodeGen/StackColoring.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/TargetSchedule.cpp
      - copied unchanged from r167701, llvm/trunk/lib/CodeGen/TargetSchedule.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFDebugRangeList.cpp
      - copied unchanged from r167701, llvm/trunk/lib/DebugInfo/DWARFDebugRangeList.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFDebugRangeList.h
      - copied unchanged from r167701, llvm/trunk/lib/DebugInfo/DWARFDebugRangeList.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/IntelJITEventsWrapper.h
      - copied unchanged from r167701, llvm/trunk/lib/ExecutionEngine/IntelJITEvents/IntelJITEventsWrapper.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/ittnotify_config.h
      - copied unchanged from r167701, llvm/trunk/lib/ExecutionEngine/IntelJITEvents/ittnotify_config.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/ittnotify_types.h
      - copied unchanged from r167701, llvm/trunk/lib/ExecutionEngine/IntelJITEvents/ittnotify_types.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/jitprofiling.c
      - copied unchanged from r167701, llvm/trunk/lib/ExecutionEngine/IntelJITEvents/jitprofiling.c
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/jitprofiling.h
      - copied unchanged from r167701, llvm/trunk/lib/ExecutionEngine/IntelJITEvents/jitprofiling.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/ObjectImageCommon.h
      - copied unchanged from r167701, llvm/trunk/lib/ExecutionEngine/RuntimeDyld/ObjectImageCommon.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMScheduleSwift.td
      - copied unchanged from r167701, llvm/trunk/lib/Target/ARM/ARMScheduleSwift.td
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonMachineScheduler.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Target/Hexagon/HexagonMachineScheduler.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonMachineScheduler.h
      - copied unchanged from r167701, llvm/trunk/lib/Target/Hexagon/HexagonMachineScheduler.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsDirectObjLower.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsDirectObjLower.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsDirectObjLower.h
      - copied unchanged from r167701, llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsDirectObjLower.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsDSPInstrFormats.td
      - copied unchanged from r167701, llvm/trunk/lib/Target/Mips/MipsDSPInstrFormats.td
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsDSPInstrInfo.td
      - copied unchanged from r167701, llvm/trunk/lib/Target/Mips/MipsDSPInstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCScheduleE500mc.td
      - copied unchanged from r167701, llvm/trunk/lib/Target/PowerPC/PPCScheduleE500mc.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCScheduleE5500.td
      - copied unchanged from r167701, llvm/trunk/lib/Target/PowerPC/PPCScheduleE5500.td
    llvm/branches/AMDILBackend/lib/Target/TargetTransformImpl.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Target/TargetTransformImpl.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrTSX.td
      - copied unchanged from r167701, llvm/trunk/lib/Target/X86/X86InstrTSX.td
    llvm/branches/AMDILBackend/lib/Transforms/IPO/BarrierNoopPass.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/IPO/BarrierNoopPass.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/BlackList.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/Instrumentation/BlackList.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/BlackList.h
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/Instrumentation/BlackList.h
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/SROA.cpp
      - copied, changed from r167701, llvm/trunk/lib/Transforms/Scalar/SROA.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/BypassSlowDivision.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/Utils/BypassSlowDivision.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/IntegerDivision.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/Utils/IntegerDivision.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/MetaRenamer.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/Utils/MetaRenamer.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/SimplifyLibCalls.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/Utils/SimplifyLibCalls.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Vectorize/LoopVectorize.cpp
      - copied unchanged from r167701, llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
    llvm/branches/AMDILBackend/lib/VMCore/AttributesImpl.h
      - copied, changed from r167701, llvm/trunk/lib/VMCore/AttributesImpl.h
    llvm/branches/AMDILBackend/lib/VMCore/DataLayout.cpp
      - copied unchanged from r167701, llvm/trunk/lib/VMCore/DataLayout.cpp
    llvm/branches/AMDILBackend/lib/VMCore/TargetTransformInfo.cpp
      - copied unchanged from r167701, llvm/trunk/lib/VMCore/TargetTransformInfo.cpp
    llvm/branches/AMDILBackend/test/Analysis/BasicAA/noalias-geps.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/BasicAA/noalias-geps.ll
    llvm/branches/AMDILBackend/test/Analysis/BasicAA/phi-speculation.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/BasicAA/phi-speculation.ll
    llvm/branches/AMDILBackend/test/Analysis/CallGraph/do-nothing-intrinsic.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CallGraph/do-nothing-intrinsic.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/
      - copied from r167701, llvm/trunk/test/Analysis/CostModel/
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/
      - copied from r167701, llvm/trunk/test/Analysis/CostModel/X86/
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/arith.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/arith.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/cast.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/cast.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/cmp.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/cmp.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/i32.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/i32.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/insert-extract-at-zero.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/insert-extract-at-zero.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/lit.local.cfg
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/loop_v2.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/loop_v2.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/tiny.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/tiny.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/X86/vectorized-loop.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/X86/vectorized-loop.ll
    llvm/branches/AMDILBackend/test/Analysis/CostModel/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/lit.local.cfg
    llvm/branches/AMDILBackend/test/Analysis/CostModel/no_info.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/CostModel/no_info.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/
      - copied from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/Banerjee.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/Banerjee.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/Coupled.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/Coupled.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/ExactRDIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/ExactRDIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/ExactSIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/ExactSIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/GCD.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/GCD.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/Preliminary.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/Preliminary.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/Propagating.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/Propagating.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/Separability.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/Separability.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/StrongSIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/StrongSIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/SymbolicRDIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/SymbolicRDIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/SymbolicSIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/SymbolicSIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/WeakCrossingSIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/WeakCrossingSIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/WeakZeroDstSIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/WeakZeroDstSIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/WeakZeroSrcSIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/WeakZeroSrcSIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/ZIV.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/ZIV.ll
    llvm/branches/AMDILBackend/test/Analysis/DependenceAnalysis/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Analysis/DependenceAnalysis/lit.local.cfg
    llvm/branches/AMDILBackend/test/Analysis/GlobalsModRef/volatile-instrs.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/GlobalsModRef/volatile-instrs.ll
    llvm/branches/AMDILBackend/test/Analysis/Profiling/load-branch-weights-ifs.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/Profiling/load-branch-weights-ifs.ll
    llvm/branches/AMDILBackend/test/Analysis/Profiling/load-branch-weights-loops.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/Profiling/load-branch-weights-loops.ll
    llvm/branches/AMDILBackend/test/Analysis/Profiling/load-branch-weights-switches.ll
      - copied unchanged from r167701, llvm/trunk/test/Analysis/Profiling/load-branch-weights-switches.ll
    llvm/branches/AMDILBackend/test/Assembler/global-addrspace-forwardref.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Assembler/global-addrspace-forwardref.ll
    llvm/branches/AMDILBackend/test/Assembler/invalid-fwdref1.ll
      - copied unchanged from r167701, llvm/trunk/test/Assembler/invalid-fwdref1.ll
    llvm/branches/AMDILBackend/test/Bitcode/function-encoding-rel-operands.ll
      - copied unchanged from r167701, llvm/trunk/test/Bitcode/function-encoding-rel-operands.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-05-04-vmov.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-05-04-vmov.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-05-10-PreferVMOVtoVDUP32.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-05-10-PreferVMOVtoVDUP32.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-08-09-neon-extload.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-08-09-neon-extload.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-08-13-bfi.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-08-13-bfi.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-08-27-CopyPhysRegCrash.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-08-27-CopyPhysRegCrash.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-08-30-select.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-08-30-select.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-09-18-ARMv4ISelBug.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-09-18-ARMv4ISelBug.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-09-25-InlineAsmScalarToVectorConv.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-09-25-InlineAsmScalarToVectorConv.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-09-25-InlineAsmScalarToVectorConv2.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-09-25-InlineAsmScalarToVectorConv2.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-10-04-FixedFrame-vs-byval.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-10-04-FixedFrame-vs-byval.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-10-04-LDRB_POST_IMM-Crash.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-10-04-LDRB_POST_IMM-Crash.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2012-10-18-PR14099-ByvalFrameAddress.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/2012-10-18-PR14099-ByvalFrameAddress.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/a15-mla.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/a15-mla.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/a15.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/a15.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/atomicrmw_minmax.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/atomicrmw_minmax.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/call-noret-minsize.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/call-noret-minsize.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/call-noret.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/call-noret.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/crash-shufflevector.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/crash-shufflevector.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/darwin-section-order.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/darwin-section-order.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/deps-fix.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/deps-fix.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/domain-conv-vmovs.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/domain-conv-vmovs.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fast-isel-pic.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/fast-isel-pic.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/floorf.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/floorf.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fp-fast.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/fp-fast.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/ifcvt12.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/ifcvt12.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/indirectbr-2.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/indirectbr-2.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/integer_insertelement.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/integer_insertelement.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/longMAC.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/longMAC.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/neon-fma.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/neon-fma.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/unaligned_load_store_vector.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/unaligned_load_store_vector.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/vselect_imax.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/ARM/vselect_imax.ll
    llvm/branches/AMDILBackend/test/CodeGen/Generic/MachineBranchProb.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Generic/MachineBranchProb.ll
    llvm/branches/AMDILBackend/test/CodeGen/Hexagon/remove_lsr.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Hexagon/remove_lsr.ll
    llvm/branches/AMDILBackend/test/CodeGen/Hexagon/simpletailcall.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Hexagon/simpletailcall.ll
    llvm/branches/AMDILBackend/test/CodeGen/MSP430/fp.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/MSP430/fp.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/alloca16.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/alloca16.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/atomicops.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/atomicops.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/biggot.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/CodeGen/Mips/biggot.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconeq.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconeq.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconeqk.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconeqk.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconeqz.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconeqz.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconge.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconge.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brcongt.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brcongt.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconle.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconle.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconlt.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconlt.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconne.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconne.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconnek.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconnek.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brconnez.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brconnez.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brind.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/brind.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/check-noat.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/check-noat.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/div.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/div.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/div_rem.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/div_rem.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/divu.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/divu.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/divu_remu.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/divu_remu.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/dsp-r1.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/dsp-r1.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/dsp-r2.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/dsp-r2.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/eh-dwarf-cfa.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/eh-dwarf-cfa.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/i32k.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/i32k.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/init-array.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/init-array.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/llcarry.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/llcarry.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/mips64-sret.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/mips64-sret.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/misha.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/misha.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/mul.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/mul.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/mulll.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/mulll.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/mulull.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/mulull.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/rem.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/rem.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/remat-immed-load.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/remat-immed-load.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/remu.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/remu.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/return-vector-float4.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/return-vector-float4.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/return-vector.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/return-vector.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/selpat.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/selpat.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/seteq.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/seteq.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/seteqz.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/seteqz.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setge.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setge.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setgek.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setgek.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setle.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setle.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setlt.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setlt.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setltk.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setltk.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setne.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setne.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setuge.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setuge.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setugt.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setugt.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setule.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setule.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setult.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setult.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/setultk.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/setultk.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/small-section-reserve-gp.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/small-section-reserve-gp.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/stchar.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/stchar.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/stldst.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/stldst.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/tailcall.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/tailcall.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/tls16.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/tls16.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/tls16_2.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/tls16_2.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/uitofp.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/uitofp.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/ul1.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/ul1.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/vector-load-store.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Mips/vector-load-store.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/global-ordering.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/CodeGen/NVPTX/global-ordering.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/param-align.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/param-align.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/pr13291-i1-store.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/CodeGen/NVPTX/pr13291-i1-store.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/ptx-version-30.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/ptx-version-30.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/ptx-version-31.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/ptx-version-31.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-10.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-10.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-11.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-11.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-12.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-12.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-13.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-13.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-20.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-20.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-21.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-21.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-30.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-30.ll
    llvm/branches/AMDILBackend/test/CodeGen/NVPTX/sm-version-35.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/NVPTX/sm-version-35.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/2012-09-16-TOC-entry-check.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/2012-09-16-TOC-entry-check.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/2012-10-11-dynalloc.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/CodeGen/PowerPC/2012-10-11-dynalloc.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/2012-10-12-bitcast.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/2012-10-12-bitcast.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/asm-Zy.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/asm-Zy.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/cr1eq-no-extra-moves.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/cr1eq-no-extra-moves.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/crsave.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/crsave.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/emptystruct.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/emptystruct.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/floatPSA.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/floatPSA.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/fsl-e500mc.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/fsl-e500mc.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/fsl-e5500.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/fsl-e5500.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/i64_fp_round.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/i64_fp_round.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/jaggedstructs.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/jaggedstructs.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/misched.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/misched.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/novrsave.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/novrsave.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/ppc64-abi-extend.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/ppc64-abi-extend.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/ppc64-align-long-double.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/ppc64-align-long-double.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/ppc64-calls.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/ppc64-calls.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/ppc64-toc.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/ppc64-toc.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/ppc64-zext.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/ppc64-zext.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/pr12757.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/pr12757.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/pr13641.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/pr13641.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/pr13891.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/pr13891.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/remat-imm.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/remat-imm.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/structsinmem.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/structsinmem.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/structsinregs.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/structsinregs.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/varargs-struct-float.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/varargs-struct-float.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/vec_cmp.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/vec_cmp.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/vec_conv.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/vec_conv.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/vec_extload.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/vec_extload.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/vec_sqrt.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/vec_sqrt.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/vrspill.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/PowerPC/vrspill.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/longMACt.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/Thumb2/longMACt.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-08-16-setcc.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-08-16-setcc.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-08-17-legalizer-crash.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-08-17-legalizer-crash.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-08-28-UnsafeMathCrash.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-08-28-UnsafeMathCrash.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-09-13-dagco-fneg.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-09-13-dagco-fneg.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-09-28-CGPBug.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-09-28-CGPBug.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-10-02-DAGCycle.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-10-02-DAGCycle.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-10-03-DAGCycle.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-10-03-DAGCycle.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-10-18-crash-dagco.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/2012-10-18-crash-dagco.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/MergeConsecutiveStores.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/MergeConsecutiveStores.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/StackColoring-dbg.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/StackColoring-dbg.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/StackColoring.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/StackColoring.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atom-bypass-slow-division.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atom-bypass-slow-division.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atom-shuf.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atom-shuf.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic-minmax-i6432.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atomic-minmax-i6432.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic-pointer.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atomic-pointer.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic16.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atomic16.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic32.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atomic32.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic64.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atomic64.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic6432.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atomic6432.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic8.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/atomic8.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/avx-intel-ocl.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/avx-intel-ocl.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/bitcast-i256.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/bitcast-i256.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/bool-simplify.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/bool-simplify.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/buildvec-insertvec.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/buildvec-insertvec.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/cmov-fp.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/cmov-fp.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/cvtv2f32.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/cvtv2f32.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/early-ifcvt-crash.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/early-ifcvt-crash.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/extract-concat.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/extract-concat.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fp-fast.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/fp-fast.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fp-load-trunc.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/fp-load-trunc.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/handle-move.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/handle-move.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/inlineasm-sched-bug.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/inlineasm-sched-bug.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/misched-balance.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/misched-balance.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/misched-ilp.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/misched-ilp.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/ms-inline-asm.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/ms-inline-asm.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/mulx32.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/mulx32.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/mulx64.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/mulx64.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pmovext.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pmovext.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr11334.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr11334.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr11985.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr11985.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr12312.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr12312.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr12359.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr12359.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr13458.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr13458.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr13577.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr13577.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr13859.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr13859.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr13899.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr13899.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr14088.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr14088.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr14090.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr14090.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr14098.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr14098.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr14161.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr14161.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr14204.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr14204.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr14314.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/CodeGen/X86/pr14314.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr14333.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/CodeGen/X86/pr14333.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pr5145.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/pr5145.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/rtm.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/rtm.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/select_const.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/select_const.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/shift-bmi2.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/shift-bmi2.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/sjlj.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/sjlj.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/sse-intel-ocl.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/sse-intel-ocl.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/sse_partial_update.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/sse_partial_update.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/stack-protector.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/stack-protector.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/vec_fabs.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/vec_fabs.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/vec_floor.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/vec_floor.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/xmulo.ll
      - copied unchanged from r167701, llvm/trunk/test/CodeGen/X86/xmulo.ll
    llvm/branches/AMDILBackend/test/DebugInfo/Inputs/dwarfdump-inl-test.elf-x86-64
      - copied unchanged from r167701, llvm/trunk/test/DebugInfo/Inputs/dwarfdump-inl-test.elf-x86-64
    llvm/branches/AMDILBackend/test/DebugInfo/X86/2010-04-13-PubType.ll
      - copied unchanged from r167701, llvm/trunk/test/DebugInfo/X86/2010-04-13-PubType.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/DW_AT_object_pointer.ll
      - copied unchanged from r167701, llvm/trunk/test/DebugInfo/X86/DW_AT_object_pointer.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/elf-names.ll
      - copied unchanged from r167701, llvm/trunk/test/DebugInfo/X86/elf-names.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/linkage-name.ll
      - copied unchanged from r167701, llvm/trunk/test/DebugInfo/X86/linkage-name.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/prologue-stack.ll
      - copied unchanged from r167701, llvm/trunk/test/DebugInfo/X86/prologue-stack.ll
    llvm/branches/AMDILBackend/test/DebugInfo/dwarfdump-inlining.test
      - copied unchanged from r167701, llvm/trunk/test/DebugInfo/dwarfdump-inlining.test
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/pr13727.ll
      - copied unchanged from r167701, llvm/trunk/test/ExecutionEngine/MCJIT/pr13727.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-common-symbols-alignment.ll
      - copied unchanged from r167701, llvm/trunk/test/ExecutionEngine/MCJIT/test-common-symbols-alignment.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-data-align.ll
      - copied unchanged from r167701, llvm/trunk/test/ExecutionEngine/MCJIT/test-data-align.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-ptr-reloc.ll
      - copied unchanged from r167701, llvm/trunk/test/ExecutionEngine/MCJIT/test-ptr-reloc.ll
    llvm/branches/AMDILBackend/test/Feature/minsize_attr.ll
      - copied unchanged from r167701, llvm/trunk/test/Feature/minsize_attr.ll
    llvm/branches/AMDILBackend/test/Instrumentation/AddressSanitizer/do-not-instrument-internal-globals.ll
      - copied unchanged from r167701, llvm/trunk/test/Instrumentation/AddressSanitizer/do-not-instrument-internal-globals.ll
    llvm/branches/AMDILBackend/test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll
      - copied unchanged from r167701, llvm/trunk/test/Instrumentation/AddressSanitizer/instrument_initializer_metadata.ll
    llvm/branches/AMDILBackend/test/MC/ARM/arm-shift-encoding.s
      - copied unchanged from r167701, llvm/trunk/test/MC/ARM/arm-shift-encoding.s
    llvm/branches/AMDILBackend/test/MC/ARM/elf-jump24-fixup.s
      - copied unchanged from r167701, llvm/trunk/test/MC/ARM/elf-jump24-fixup.s
    llvm/branches/AMDILBackend/test/MC/ARM/thumb-shift-encoding.s
      - copied unchanged from r167701, llvm/trunk/test/MC/ARM/thumb-shift-encoding.s
    llvm/branches/AMDILBackend/test/MC/ARM/thumb2-b.w-encodingT4.s
      - copied unchanged from r167701, llvm/trunk/test/MC/ARM/thumb2-b.w-encodingT4.s
    llvm/branches/AMDILBackend/test/MC/AsmParser/bad-macro.s
      - copied unchanged from r167701, llvm/trunk/test/MC/AsmParser/bad-macro.s
    llvm/branches/AMDILBackend/test/MC/AsmParser/macros-darwin.s
      - copied unchanged from r167701, llvm/trunk/test/MC/AsmParser/macros-darwin.s
    llvm/branches/AMDILBackend/test/MC/COFF/comm.ll
      - copied unchanged from r167701, llvm/trunk/test/MC/COFF/comm.ll
    llvm/branches/AMDILBackend/test/MC/COFF/global_ctors_dtors.ll
      - copied unchanged from r167701, llvm/trunk/test/MC/COFF/global_ctors_dtors.ll
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/invalid-VLD1LNd32_UPD-thumb.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/invalid-VLD1LNd32_UPD-thumb.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/invalid-VLD4DUPd32_UPD-thumb.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/invalid-VLD4DUPd32_UPD-thumb.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/invalid-VLD4LNd32_UPD-thumb.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/invalid-VLD4LNd32_UPD-thumb.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/invalid-VST1LNd32_UPD-thumb.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/invalid-VST1LNd32_UPD-thumb.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/invalid-VST4LNd32_UPD-thumb.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/invalid-VST4LNd32_UPD-thumb.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/marked-up-thumb.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/marked-up-thumb.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/neont-VLD-reencoding.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/neont-VLD-reencoding.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/neont-VST-reencoding.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/ARM/neont-VST-reencoding.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/X86/marked-up.txt
      - copied unchanged from r167701, llvm/trunk/test/MC/Disassembler/X86/marked-up.txt
    llvm/branches/AMDILBackend/test/MC/ELF/cfi-reg.s
      - copied unchanged from r167701, llvm/trunk/test/MC/ELF/cfi-reg.s
    llvm/branches/AMDILBackend/test/MC/ELF/fde.s
      - copied unchanged from r167701, llvm/trunk/test/MC/ELF/fde.s
    llvm/branches/AMDILBackend/test/MC/ELF/lcomm.s
      - copied unchanged from r167701, llvm/trunk/test/MC/ELF/lcomm.s
    llvm/branches/AMDILBackend/test/MC/MachO/ARM/long-call-branch-island-relocation.s
      - copied unchanged from r167701, llvm/trunk/test/MC/MachO/ARM/long-call-branch-island-relocation.s
    llvm/branches/AMDILBackend/test/MC/MachO/absolute.s
      - copied unchanged from r167701, llvm/trunk/test/MC/MachO/absolute.s
    llvm/branches/AMDILBackend/test/MC/MachO/gen-dwarf-cpp.s
      - copied unchanged from r167701, llvm/trunk/test/MC/MachO/gen-dwarf-cpp.s
    llvm/branches/AMDILBackend/test/MC/MachO/gen-dwarf-macro-cpp.s
      - copied unchanged from r167701, llvm/trunk/test/MC/MachO/gen-dwarf-macro-cpp.s
    llvm/branches/AMDILBackend/test/MC/MachO/i386-large-relocations.s
      - copied unchanged from r167701, llvm/trunk/test/MC/MachO/i386-large-relocations.s
    llvm/branches/AMDILBackend/test/MC/MachO/x86-data-in-code.ll
      - copied unchanged from r167701, llvm/trunk/test/MC/MachO/x86-data-in-code.ll
    llvm/branches/AMDILBackend/test/MC/Markup/
      - copied from r167701, llvm/trunk/test/MC/Markup/
    llvm/branches/AMDILBackend/test/MC/Markup/basic-markup.mc
      - copied unchanged from r167701, llvm/trunk/test/MC/Markup/basic-markup.mc
    llvm/branches/AMDILBackend/test/MC/Markup/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/MC/Markup/lit.local.cfg
    llvm/branches/AMDILBackend/test/MC/Mips/do_switch.ll
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/do_switch.ll
    llvm/branches/AMDILBackend/test/MC/Mips/mips-alu-instructions.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-alu-instructions.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips-coprocessor-encodings.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-coprocessor-encodings.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips-expansions.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-expansions.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips-fpu-instructions.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-fpu-instructions.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips-jump-instructions.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-jump-instructions.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips-memory-instructions.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-memory-instructions.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips-register-names.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-register-names.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips-relocations.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips-relocations.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips64-register-names.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips64-register-names.s
    llvm/branches/AMDILBackend/test/MC/Mips/mips64extins.ll
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips64extins.ll
    llvm/branches/AMDILBackend/test/MC/Mips/mips_directives.s
      - copied unchanged from r167701, llvm/trunk/test/MC/Mips/mips_directives.s
    llvm/branches/AMDILBackend/test/MC/Mips/xgot.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/MC/Mips/xgot.ll
    llvm/branches/AMDILBackend/test/MC/PowerPC/
      - copied from r167701, llvm/trunk/test/MC/PowerPC/
    llvm/branches/AMDILBackend/test/MC/PowerPC/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/MC/PowerPC/lit.local.cfg
    llvm/branches/AMDILBackend/test/MC/PowerPC/ppc64-initial-cfa.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/MC/PowerPC/ppc64-initial-cfa.ll
    llvm/branches/AMDILBackend/test/MC/PowerPC/ppc64-relocs-01.ll
      - copied unchanged from r167701, llvm/trunk/test/MC/PowerPC/ppc64-relocs-01.ll
    llvm/branches/AMDILBackend/test/MC/PowerPC/ppc64-tls-relocs-01.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/MC/PowerPC/ppc64-tls-relocs-01.ll
    llvm/branches/AMDILBackend/test/MC/X86/x86-32-ms-inline-asm.s
      - copied unchanged from r167701, llvm/trunk/test/MC/X86/x86-32-ms-inline-asm.s
    llvm/branches/AMDILBackend/test/MC/X86/x86_64-rtm-encoding.s
      - copied unchanged from r167701, llvm/trunk/test/MC/X86/x86_64-rtm-encoding.s
    llvm/branches/AMDILBackend/test/MC/X86/x86_nop.s
      - copied unchanged from r167701, llvm/trunk/test/MC/X86/x86_nop.s
    llvm/branches/AMDILBackend/test/Object/Inputs/dext-test.elf-mips64r2
      - copied unchanged from r167701, llvm/trunk/test/Object/Inputs/dext-test.elf-mips64r2
    llvm/branches/AMDILBackend/test/Object/Inputs/relocations.elf-x86-64
      - copied unchanged from r167701, llvm/trunk/test/Object/Inputs/relocations.elf-x86-64
    llvm/branches/AMDILBackend/test/Object/Mips/
      - copied from r167701, llvm/trunk/test/Object/Mips/
    llvm/branches/AMDILBackend/test/Object/Mips/feature.test
      - copied unchanged from r167701, llvm/trunk/test/Object/Mips/feature.test
    llvm/branches/AMDILBackend/test/Object/Mips/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Object/Mips/lit.local.cfg
    llvm/branches/AMDILBackend/test/Other/FileCheck-space.txt
      - copied unchanged from r167701, llvm/trunk/test/Other/FileCheck-space.txt
    llvm/branches/AMDILBackend/test/Other/Inputs/
      - copied from r167701, llvm/trunk/test/Other/Inputs/
    llvm/branches/AMDILBackend/test/Other/Inputs/llvm-cov.gcda
      - copied unchanged from r167701, llvm/trunk/test/Other/Inputs/llvm-cov.gcda
    llvm/branches/AMDILBackend/test/Other/Inputs/llvm-cov.gcno
      - copied unchanged from r167701, llvm/trunk/test/Other/Inputs/llvm-cov.gcno
    llvm/branches/AMDILBackend/test/Other/ResponseFile.ll
      - copied unchanged from r167701, llvm/trunk/test/Other/ResponseFile.ll
    llvm/branches/AMDILBackend/test/Other/extract-alias.ll
      - copied unchanged from r167701, llvm/trunk/test/Other/extract-alias.ll
    llvm/branches/AMDILBackend/test/Other/extract-weak-odr.ll
      - copied unchanged from r167701, llvm/trunk/test/Other/extract-weak-odr.ll
    llvm/branches/AMDILBackend/test/Other/link-opts.ll
      - copied unchanged from r167701, llvm/trunk/test/Other/link-opts.ll
    llvm/branches/AMDILBackend/test/Other/llvm-cov.test
      - copied unchanged from r167701, llvm/trunk/test/Other/llvm-cov.test
    llvm/branches/AMDILBackend/test/Other/llvm-nm-without-aliases.ll
      - copied unchanged from r167701, llvm/trunk/test/Other/llvm-nm-without-aliases.ll
    llvm/branches/AMDILBackend/test/Other/spir_cc.ll
      - copied unchanged from r167701, llvm/trunk/test/Other/spir_cc.ll
    llvm/branches/AMDILBackend/test/TableGen/list-element-bitref.td
      - copied unchanged from r167701, llvm/trunk/test/TableGen/list-element-bitref.td
    llvm/branches/AMDILBackend/test/TableGen/pr8330.td
      - copied unchanged from r167701, llvm/trunk/test/TableGen/pr8330.td
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/
      - copied from r167701, llvm/trunk/test/Transforms/BBVectorize/X86/
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/cmp-types.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Transforms/BBVectorize/X86/cmp-types.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/loop1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/BBVectorize/X86/loop1.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/sh-rec.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Transforms/BBVectorize/X86/sh-rec.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/sh-rec2.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Transforms/BBVectorize/X86/sh-rec2.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/sh-rec3.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Transforms/BBVectorize/X86/sh-rec3.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/sh-types.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Transforms/BBVectorize/X86/sh-types.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/simple-ldstr.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/BBVectorize/X86/simple-ldstr.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/simple.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/BBVectorize/X86/simple.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/X86/vs-cast.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/BBVectorize/X86/vs-cast.ll
    llvm/branches/AMDILBackend/test/Transforms/DeadArgElim/dbginfo.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/DeadArgElim/dbginfo.ll
    llvm/branches/AMDILBackend/test/Transforms/DeadStoreElimination/libcalls.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/DeadStoreElimination/libcalls.ll
    llvm/branches/AMDILBackend/test/Transforms/EarlyCSE/commute.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/EarlyCSE/commute.ll
    llvm/branches/AMDILBackend/test/Transforms/GVN/edge.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/GVN/edge.ll
    llvm/branches/AMDILBackend/test/Transforms/GVN/malloc-load-removal.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/GVN/malloc-load-removal.ll
    llvm/branches/AMDILBackend/test/Transforms/GVN/pr14166.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/GVN/pr14166.ll
    llvm/branches/AMDILBackend/test/Transforms/GlobalOpt/blockaddress.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Transforms/GlobalOpt/blockaddress.ll
    llvm/branches/AMDILBackend/test/Transforms/GlobalOpt/tls.ll
      - copied unchanged from r172535, llvm/branches/release_32/test/Transforms/GlobalOpt/tls.ll
    llvm/branches/AMDILBackend/test/Transforms/IndVarSimplify/2012-10-19-congruent-constant.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/IndVarSimplify/2012-10-19-congruent-constant.ll
    llvm/branches/AMDILBackend/test/Transforms/IndVarSimplify/verify-scev.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/IndVarSimplify/verify-scev.ll
    llvm/branches/AMDILBackend/test/Transforms/Inline/recursive.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/Inline/recursive.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/2012-08-28-udiv_ashl.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/2012-08-28-udiv_ashl.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/2012-09-17-ZeroSizedAlloca.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/2012-09-17-ZeroSizedAlloca.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/2012-09-24-MemcpyFromGlobalCrash.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/2012-09-24-MemcpyFromGlobalCrash.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/2012-10-25-vector-of-pointers.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/2012-10-25-vector-of-pointers.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/disable-simplify-libcalls.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/disable-simplify-libcalls.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcmp-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memcmp-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcmp-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memcmp-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcpy-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memcpy-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcpy-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memcpy-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcpy-from-global.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memcpy-from-global.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcpy_chk-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memcpy_chk-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcpy_chk-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memcpy_chk-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memmove-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memmove-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memmove-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memmove-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memmove_chk-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memmove_chk-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memmove_chk-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memmove_chk-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memset-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memset-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memset-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memset-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memset_chk-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memset_chk-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memset_chk-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/memset_chk-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/obfuscated_splat.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/obfuscated_splat.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/stpcpy-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/stpcpy-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/stpcpy-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/stpcpy-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/stpcpy_chk-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/stpcpy_chk-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/stpcpy_chk-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/stpcpy_chk-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcat-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcat-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcat-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcat-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcat-3.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcat-3.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strchr-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strchr-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strchr-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strchr-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcmp-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcmp-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcmp-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcmp-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcpy-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcpy-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcpy-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcpy-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcpy_chk-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcpy_chk-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcpy_chk-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcpy_chk-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcspn-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcspn-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcspn-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strcspn-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strlen-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strlen-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strlen-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strlen-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncat-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncat-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncat-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncat-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncat-3.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncat-3.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncmp-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncmp-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncmp-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncmp-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncpy-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncpy-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncpy-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncpy-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncpy_chk-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncpy_chk-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strncpy_chk-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strncpy_chk-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strpbrk-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strpbrk-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strpbrk-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strpbrk-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strrchr-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strrchr-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strrchr-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strrchr-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strspn-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strspn-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strstr-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strstr-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strstr-2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strstr-2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strto-1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/strto-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/struct-assign-tbaa.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/struct-assign-tbaa.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/vector_gep2.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/vector_gep2.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/weak-symbols.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/InstCombine/weak-symbols.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopIdiom/crash.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopIdiom/crash.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopIdiom/non-canonical-loop.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopIdiom/non-canonical-loop.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopIdiom/scev-invalidation.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopIdiom/scev-invalidation.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopRotate/multiple-exits.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopRotate/multiple-exits.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopUnroll/pr14167.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopUnroll/pr14167.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/
      - copied from r167701, llvm/trunk/test/Transforms/LoopVectorize/
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/2012-10-20-infloop.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/2012-10-20-infloop.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/2012-10-22-isconsec.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/2012-10-22-isconsec.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/X86/
      - copied from r167701, llvm/trunk/test/Transforms/LoopVectorize/X86/
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/X86/avx1.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/X86/avx1.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/X86/conversion-cost.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/X86/conversion-cost.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/X86/cost-model.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/X86/cost-model.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/X86/gcc-examples.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/X86/gcc-examples.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/X86/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/X86/lit.local.cfg
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/cpp-new-array.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/cpp-new-array.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/flags.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/flags.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/gcc-examples.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/gcc-examples.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/increment.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/increment.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/induction_plus.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/induction_plus.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/lit.local.cfg
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/non-const-n.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/non-const-n.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/read-only.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/read-only.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/reduction.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/reduction.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/runtime-check.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/runtime-check.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/scalar-select.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/scalar-select.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/small-loop.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/small-loop.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/start-non-zero.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/start-non-zero.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopVectorize/write-only.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/LoopVectorize/write-only.ll
    llvm/branches/AMDILBackend/test/Transforms/MetaRenamer/
      - copied from r167701, llvm/trunk/test/Transforms/MetaRenamer/
    llvm/branches/AMDILBackend/test/Transforms/MetaRenamer/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Transforms/MetaRenamer/lit.local.cfg
    llvm/branches/AMDILBackend/test/Transforms/MetaRenamer/metarenamer.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/MetaRenamer/metarenamer.ll
    llvm/branches/AMDILBackend/test/Transforms/ObjCARC/path-overflow.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/ObjCARC/path-overflow.ll
    llvm/branches/AMDILBackend/test/Transforms/PhaseOrdering/gdce.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/PhaseOrdering/gdce.ll
    llvm/branches/AMDILBackend/test/Transforms/SROA/
      - copied from r167701, llvm/trunk/test/Transforms/SROA/
    llvm/branches/AMDILBackend/test/Transforms/SROA/alignment.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SROA/alignment.ll
    llvm/branches/AMDILBackend/test/Transforms/SROA/basictest.ll
      - copied, changed from r167701, llvm/trunk/test/Transforms/SROA/basictest.ll
    llvm/branches/AMDILBackend/test/Transforms/SROA/big-endian.ll
      - copied, changed from r167701, llvm/trunk/test/Transforms/SROA/big-endian.ll
    llvm/branches/AMDILBackend/test/Transforms/SROA/fca.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SROA/fca.ll
    llvm/branches/AMDILBackend/test/Transforms/SROA/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SROA/lit.local.cfg
    llvm/branches/AMDILBackend/test/Transforms/SROA/phi-and-select.ll
      - copied, changed from r167701, llvm/trunk/test/Transforms/SROA/phi-and-select.ll
    llvm/branches/AMDILBackend/test/Transforms/SROA/vector-promotion.ll
      - copied, changed from r167701, llvm/trunk/test/Transforms/SROA/vector-promotion.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/SPARC/
      - copied from r167701, llvm/trunk/test/Transforms/SimplifyCFG/SPARC/
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/SPARC/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyCFG/SPARC/lit.local.cfg
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/SPARC/switch_to_lookup_table.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyCFG/SPARC/switch_to_lookup_table.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/X86/
      - copied from r167701, llvm/trunk/test/Transforms/SimplifyCFG/X86/
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/X86/lit.local.cfg
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyCFG/X86/lit.local.cfg
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/preserve-branchweights-partial.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyCFG/preserve-branchweights-partial.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyCFG/preserve-branchweights-switch-create.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/sink-common-code.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyCFG/sink-common-code.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/double-float-shrink.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyLibCalls/double-float-shrink.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/float-shrink-compare.ll
      - copied unchanged from r167701, llvm/trunk/test/Transforms/SimplifyLibCalls/float-shrink-compare.ll
    llvm/branches/AMDILBackend/tools/lli/RecordingMemoryManager.cpp
      - copied unchanged from r167701, llvm/trunk/tools/lli/RecordingMemoryManager.cpp
    llvm/branches/AMDILBackend/tools/lli/RecordingMemoryManager.h
      - copied unchanged from r167701, llvm/trunk/tools/lli/RecordingMemoryManager.h
    llvm/branches/AMDILBackend/tools/lli/RemoteTarget.cpp
      - copied unchanged from r167701, llvm/trunk/tools/lli/RemoteTarget.cpp
    llvm/branches/AMDILBackend/tools/lli/RemoteTarget.h
      - copied unchanged from r167701, llvm/trunk/tools/lli/RemoteTarget.h
    llvm/branches/AMDILBackend/tools/llvm-mcmarkup/
      - copied from r167701, llvm/trunk/tools/llvm-mcmarkup/
    llvm/branches/AMDILBackend/tools/llvm-mcmarkup/CMakeLists.txt
      - copied unchanged from r167701, llvm/trunk/tools/llvm-mcmarkup/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/llvm-mcmarkup/LLVMBuild.txt
      - copied unchanged from r167701, llvm/trunk/tools/llvm-mcmarkup/LLVMBuild.txt
    llvm/branches/AMDILBackend/tools/llvm-mcmarkup/Makefile
      - copied unchanged from r167701, llvm/trunk/tools/llvm-mcmarkup/Makefile
    llvm/branches/AMDILBackend/tools/llvm-mcmarkup/llvm-mcmarkup.cpp
      - copied unchanged from r167701, llvm/trunk/tools/llvm-mcmarkup/llvm-mcmarkup.cpp
    llvm/branches/AMDILBackend/unittests/ADT/ImmutableMapTest.cpp
      - copied unchanged from r167701, llvm/trunk/unittests/ADT/ImmutableMapTest.cpp
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/   (props changed)
      - copied from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/CMakeLists.txt
      - copied unchanged from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/CMakeLists.txt
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp
      - copied unchanged from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
      - copied unchanged from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/MCJITTests.def
      - copied unchanged from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/MCJITTests.def
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/Makefile
      - copied unchanged from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/Makefile
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
      - copied unchanged from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/MCJIT/SectionMemoryManager.h
      - copied unchanged from r167701, llvm/trunk/unittests/ExecutionEngine/MCJIT/SectionMemoryManager.h
    llvm/branches/AMDILBackend/unittests/Support/MemoryBufferTest.cpp
      - copied unchanged from r167701, llvm/trunk/unittests/Support/MemoryBufferTest.cpp
    llvm/branches/AMDILBackend/unittests/Support/MemoryTest.cpp
      - copied unchanged from r167701, llvm/trunk/unittests/Support/MemoryTest.cpp
    llvm/branches/AMDILBackend/unittests/Support/formatted_raw_ostream_test.cpp
      - copied unchanged from r167701, llvm/trunk/unittests/Support/formatted_raw_ostream_test.cpp
    llvm/branches/AMDILBackend/unittests/Transforms/Utils/IntegerDivision.cpp
      - copied unchanged from r167701, llvm/trunk/unittests/Transforms/Utils/IntegerDivision.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenMapTable.cpp
      - copied unchanged from r167701, llvm/trunk/utils/TableGen/CodeGenMapTable.cpp
    llvm/branches/AMDILBackend/utils/lit/lit/ExampleTests/vg-fail.c
      - copied unchanged from r167701, llvm/trunk/utils/lit/lit/ExampleTests/vg-fail.c
    llvm/branches/AMDILBackend/utils/lit/lit/ExampleTests/xfail-feature.c
      - copied unchanged from r167701, llvm/trunk/utils/lit/lit/ExampleTests/xfail-feature.c
Removed:
    llvm/branches/AMDILBackend/docs/CompilerWriterInfo.html
    llvm/branches/AMDILBackend/docs/DebuggingJITedCode.html
    llvm/branches/AMDILBackend/docs/ExtendingLLVM.html
    llvm/branches/AMDILBackend/docs/GettingStarted.html
    llvm/branches/AMDILBackend/docs/GoldPlugin.html
    llvm/branches/AMDILBackend/docs/HowToAddABuilder.html
    llvm/branches/AMDILBackend/docs/HowToSubmitABug.html
    llvm/branches/AMDILBackend/docs/llvm-theme/layout.html
    llvm/branches/AMDILBackend/docs/llvm-theme/static/contents.png
    llvm/branches/AMDILBackend/docs/llvm-theme/static/llvm-theme.css
    llvm/branches/AMDILBackend/docs/llvm-theme/static/logo.png
    llvm/branches/AMDILBackend/docs/llvm-theme/static/navigation.png
    llvm/branches/AMDILBackend/docs/llvm-theme/theme.conf
    llvm/branches/AMDILBackend/include/llvm/ADT/Trie.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/LoopDependenceAnalysis.h
    llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/IntelJITEventsWrapper.h
    llvm/branches/AMDILBackend/include/llvm/TableGen/TableGenAction.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetData.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetELFWriterInfo.h
    llvm/branches/AMDILBackend/lib/Analysis/LoopDependenceAnalysis.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/ObjectImage.h
    llvm/branches/AMDILBackend/lib/TableGen/TableGenAction.cpp
    llvm/branches/AMDILBackend/lib/Target/AMDGPU/
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMELFWriterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMELFWriterInfo.h
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeELFWriterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeELFWriterInfo.h
    llvm/branches/AMDILBackend/lib/Target/TargetData.cpp
    llvm/branches/AMDILBackend/lib/Target/TargetELFWriterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86ELFWriterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86ELFWriterInfo.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86MCInstLower.h
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/FunctionBlackList.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/FunctionBlackList.h
    llvm/branches/AMDILBackend/test/Analysis/LoopDependenceAnalysis/alias.ll
    llvm/branches/AMDILBackend/test/Analysis/LoopDependenceAnalysis/lit.local.cfg
    llvm/branches/AMDILBackend/test/Analysis/LoopDependenceAnalysis/siv-strong.ll
    llvm/branches/AMDILBackend/test/Analysis/LoopDependenceAnalysis/siv-weak-crossing.ll
    llvm/branches/AMDILBackend/test/Analysis/LoopDependenceAnalysis/siv-weak-zero.ll
    llvm/branches/AMDILBackend/test/Analysis/LoopDependenceAnalysis/ziv.ll
    llvm/branches/AMDILBackend/test/Assembler/2003-06-17-InvokeDisassemble.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/longMACt.ll
    llvm/branches/AMDILBackend/test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll
    llvm/branches/AMDILBackend/test/CodeGen/PTX/
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/bl8_elf_nop.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/ppc64-ind-call.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/stack-protector-linux.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/unreachable-stack-protector.ll
    llvm/branches/AMDILBackend/test/DebugInfo/2010-04-13-PubType.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/pr13303.ll
    llvm/branches/AMDILBackend/test/MC/COFF/global_ctors.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memset_chk.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/strcpy_chk.ll
    llvm/branches/AMDILBackend/test/Transforms/PruneEH/2003-09-14-ExternalCall.ll
    llvm/branches/AMDILBackend/test/Transforms/ScalarRepl/memcpy-from-global.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/2003-08-05-MishandleInvoke.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/2006-10-29-InvokeCrash.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/2009-06-15-InvokeCrash.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/2009-02-12-StrTo.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StpCpy.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrCat.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrChr.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrCmp.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrCpy.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrLen.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrNCat.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrNCmp.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrNCpy.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrPBrk.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrRChr.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrSpn.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/StrStr.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/memcmp.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/memmove.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/memset-64.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/memset.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/weak-symbols.ll
    llvm/branches/AMDILBackend/test/lib/
    llvm/branches/AMDILBackend/utils/lit/lit/ExampleTests/LLVM.InTree/test/Bar/bar-test.ll
Modified:
    llvm/branches/AMDILBackend/   (props changed)
    llvm/branches/AMDILBackend/.gitignore
    llvm/branches/AMDILBackend/CMakeLists.txt
    llvm/branches/AMDILBackend/CREDITS.TXT
    llvm/branches/AMDILBackend/Makefile
    llvm/branches/AMDILBackend/Makefile.config.in
    llvm/branches/AMDILBackend/Makefile.rules
    llvm/branches/AMDILBackend/autoconf/configure.ac
    llvm/branches/AMDILBackend/bindings/ocaml/executionengine/executionengine_ocaml.c
    llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.ml
    llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.mli
    llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm.mli
    llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm_ocaml.c
    llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.ml
    llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.mli
    llvm/branches/AMDILBackend/bindings/ocaml/target/target_ocaml.c
    llvm/branches/AMDILBackend/cmake/config-ix.cmake
    llvm/branches/AMDILBackend/cmake/modules/AddLLVM.cmake
    llvm/branches/AMDILBackend/cmake/modules/LLVMProcessSources.cmake
    llvm/branches/AMDILBackend/configure
    llvm/branches/AMDILBackend/docs/AliasAnalysis.rst
    llvm/branches/AMDILBackend/docs/BitCodeFormat.rst
    llvm/branches/AMDILBackend/docs/CMake.rst
    llvm/branches/AMDILBackend/docs/CodeGenerator.rst
    llvm/branches/AMDILBackend/docs/CodingStandards.rst
    llvm/branches/AMDILBackend/docs/CommandGuide/FileCheck.rst
    llvm/branches/AMDILBackend/docs/CommandGuide/lit.rst
    llvm/branches/AMDILBackend/docs/DeveloperPolicy.rst
    llvm/branches/AMDILBackend/docs/GarbageCollection.html
    llvm/branches/AMDILBackend/docs/LangRef.html
    llvm/branches/AMDILBackend/docs/Lexicon.rst
    llvm/branches/AMDILBackend/docs/LinkTimeOptimization.rst
    llvm/branches/AMDILBackend/docs/Makefile.sphinx
    llvm/branches/AMDILBackend/docs/Passes.html
    llvm/branches/AMDILBackend/docs/ProgrammersManual.html
    llvm/branches/AMDILBackend/docs/README.txt
    llvm/branches/AMDILBackend/docs/ReleaseNotes.html
    llvm/branches/AMDILBackend/docs/SourceLevelDebugging.html
    llvm/branches/AMDILBackend/docs/TestingGuide.html
    llvm/branches/AMDILBackend/docs/WritingAnLLVMBackend.html
    llvm/branches/AMDILBackend/docs/conf.py
    llvm/branches/AMDILBackend/docs/index.rst
    llvm/branches/AMDILBackend/docs/programming.rst
    llvm/branches/AMDILBackend/docs/subsystems.rst
    llvm/branches/AMDILBackend/docs/tutorial/LangImpl4.html
    llvm/branches/AMDILBackend/docs/tutorial/LangImpl5.html
    llvm/branches/AMDILBackend/docs/tutorial/LangImpl6.html
    llvm/branches/AMDILBackend/docs/tutorial/LangImpl7.html
    llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl4.html
    llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl5.html
    llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl6.html
    llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl7.html
    llvm/branches/AMDILBackend/docs/userguides.rst
    llvm/branches/AMDILBackend/docs/yaml2obj.rst
    llvm/branches/AMDILBackend/examples/ExceptionDemo/ExceptionDemo.cpp
    llvm/branches/AMDILBackend/examples/Fibonacci/fibonacci.cpp
    llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter4/toy.cpp
    llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter5/toy.cpp
    llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter6/toy.cpp
    llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter7/toy.cpp
    llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter4/toy.ml
    llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter5/toy.ml
    llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter6/toy.ml
    llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter7/toy.ml
    llvm/branches/AMDILBackend/include/llvm-c/Core.h
    llvm/branches/AMDILBackend/include/llvm-c/Disassembler.h
    llvm/branches/AMDILBackend/include/llvm-c/Target.h
    llvm/branches/AMDILBackend/include/llvm-c/TargetMachine.h
    llvm/branches/AMDILBackend/include/llvm-c/Transforms/Vectorize.h
    llvm/branches/AMDILBackend/include/llvm/ADT/APFloat.h
    llvm/branches/AMDILBackend/include/llvm/ADT/APInt.h
    llvm/branches/AMDILBackend/include/llvm/ADT/ArrayRef.h
    llvm/branches/AMDILBackend/include/llvm/ADT/BitVector.h
    llvm/branches/AMDILBackend/include/llvm/ADT/DAGDeltaAlgorithm.h
    llvm/branches/AMDILBackend/include/llvm/ADT/DeltaAlgorithm.h
    llvm/branches/AMDILBackend/include/llvm/ADT/DenseMap.h
    llvm/branches/AMDILBackend/include/llvm/ADT/DenseMapInfo.h
    llvm/branches/AMDILBackend/include/llvm/ADT/EquivalenceClasses.h
    llvm/branches/AMDILBackend/include/llvm/ADT/FoldingSet.h
    llvm/branches/AMDILBackend/include/llvm/ADT/Hashing.h
    llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableList.h
    llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableMap.h
    llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableSet.h
    llvm/branches/AMDILBackend/include/llvm/ADT/Optional.h
    llvm/branches/AMDILBackend/include/llvm/ADT/OwningPtr.h
    llvm/branches/AMDILBackend/include/llvm/ADT/PackedVector.h
    llvm/branches/AMDILBackend/include/llvm/ADT/PointerIntPair.h
    llvm/branches/AMDILBackend/include/llvm/ADT/ScopedHashTable.h
    llvm/branches/AMDILBackend/include/llvm/ADT/SetVector.h
    llvm/branches/AMDILBackend/include/llvm/ADT/SmallBitVector.h
    llvm/branches/AMDILBackend/include/llvm/ADT/SmallPtrSet.h
    llvm/branches/AMDILBackend/include/llvm/ADT/SmallString.h
    llvm/branches/AMDILBackend/include/llvm/ADT/SmallVector.h
    llvm/branches/AMDILBackend/include/llvm/ADT/SparseBitVector.h
    llvm/branches/AMDILBackend/include/llvm/ADT/SparseSet.h
    llvm/branches/AMDILBackend/include/llvm/ADT/StringExtras.h
    llvm/branches/AMDILBackend/include/llvm/ADT/StringRef.h
    llvm/branches/AMDILBackend/include/llvm/ADT/StringSet.h
    llvm/branches/AMDILBackend/include/llvm/ADT/Triple.h
    llvm/branches/AMDILBackend/include/llvm/ADT/Twine.h
    llvm/branches/AMDILBackend/include/llvm/ADT/ValueMap.h
    llvm/branches/AMDILBackend/include/llvm/ADT/VariadicFunction.h
    llvm/branches/AMDILBackend/include/llvm/ADT/ilist.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/AliasAnalysis.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/AliasSetTracker.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/BranchProbabilityInfo.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/CallGraph.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/CaptureTracking.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/CodeMetrics.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/ConstantFolding.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/Dominators.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/IVUsers.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/InlineCost.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/InstructionSimplify.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/IntervalPartition.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/LazyValueInfo.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/Loads.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfo.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfoImpl.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryBuiltins.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryDependenceAnalysis.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/PHITransAddr.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/Passes.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/ProfileInfoTypes.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/RegionInfo.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolution.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolutionExpressions.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/SparsePropagation.h
    llvm/branches/AMDILBackend/include/llvm/Analysis/ValueTracking.h
    llvm/branches/AMDILBackend/include/llvm/Argument.h
    llvm/branches/AMDILBackend/include/llvm/Attributes.h
    llvm/branches/AMDILBackend/include/llvm/BasicBlock.h
    llvm/branches/AMDILBackend/include/llvm/Bitcode/Archive.h
    llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamReader.h
    llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamWriter.h
    llvm/branches/AMDILBackend/include/llvm/Bitcode/LLVMBitCodes.h
    llvm/branches/AMDILBackend/include/llvm/CallingConv.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/AsmPrinter.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/CallingConvLower.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/FastISel.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadata.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadataPrinter.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/ISDOpcodes.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/IntrinsicLowering.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveInterval.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveIntervalAnalysis.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveVariables.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBasicBlock.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineConstantPool.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFrameInfo.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFunction.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstr.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBuilder.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBundle.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineJumpTableInfo.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineLoopInfo.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineMemOperand.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineModuleInfoImpls.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineOperand.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineRegisterInfo.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineSSAUpdater.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineScheduler.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/Graph.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/HeuristicBase.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/Passes.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/PseudoSourceValue.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/RegAllocPBQP.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterClassInfo.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterPressure.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterScavenging.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAG.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAGInstrs.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/SchedulerRegistry.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAG.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAGNodes.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.h
    llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.td
    llvm/branches/AMDILBackend/include/llvm/Config/AsmParsers.def.in
    llvm/branches/AMDILBackend/include/llvm/Config/AsmPrinters.def.in
    llvm/branches/AMDILBackend/include/llvm/Config/Disassemblers.def.in
    llvm/branches/AMDILBackend/include/llvm/Config/config.h.cmake
    llvm/branches/AMDILBackend/include/llvm/Config/config.h.in
    llvm/branches/AMDILBackend/include/llvm/Constant.h
    llvm/branches/AMDILBackend/include/llvm/Constants.h
    llvm/branches/AMDILBackend/include/llvm/DIBuilder.h
    llvm/branches/AMDILBackend/include/llvm/DebugInfo.h
    llvm/branches/AMDILBackend/include/llvm/DebugInfo/DIContext.h
    llvm/branches/AMDILBackend/include/llvm/DefaultPasses.h
    llvm/branches/AMDILBackend/include/llvm/DerivedTypes.h
    llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/ExecutionEngine.h
    llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITEventListener.h
    llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITMemoryManager.h
    llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/RuntimeDyld.h
    llvm/branches/AMDILBackend/include/llvm/Function.h
    llvm/branches/AMDILBackend/include/llvm/GlobalAlias.h
    llvm/branches/AMDILBackend/include/llvm/GlobalValue.h
    llvm/branches/AMDILBackend/include/llvm/GlobalVariable.h
    llvm/branches/AMDILBackend/include/llvm/IRBuilder.h
    llvm/branches/AMDILBackend/include/llvm/InitializePasses.h
    llvm/branches/AMDILBackend/include/llvm/InlineAsm.h
    llvm/branches/AMDILBackend/include/llvm/InstrTypes.h
    llvm/branches/AMDILBackend/include/llvm/Instruction.h
    llvm/branches/AMDILBackend/include/llvm/Instructions.h
    llvm/branches/AMDILBackend/include/llvm/IntrinsicInst.h
    llvm/branches/AMDILBackend/include/llvm/Intrinsics.h
    llvm/branches/AMDILBackend/include/llvm/Intrinsics.td
    llvm/branches/AMDILBackend/include/llvm/IntrinsicsARM.td
    llvm/branches/AMDILBackend/include/llvm/IntrinsicsHexagon.td
    llvm/branches/AMDILBackend/include/llvm/IntrinsicsMips.td
    llvm/branches/AMDILBackend/include/llvm/IntrinsicsX86.td
    llvm/branches/AMDILBackend/include/llvm/LLVMContext.h
    llvm/branches/AMDILBackend/include/llvm/LinkAllPasses.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCAsmBackend.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCAsmInfo.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCAssembler.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCCodeEmitter.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCContext.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCDwarf.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCELFObjectWriter.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCExpr.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCInst.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCInstPrinter.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCInstrDesc.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCLabel.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCMachObjectWriter.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCObjectFileInfo.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCObjectStreamer.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCObjectWriter.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCParser/AsmLexer.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCParser/MCAsmLexer.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCParser/MCAsmParser.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCParser/MCAsmParserExtension.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCParser/MCParsedAsmOperand.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCRegisterInfo.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCSchedule.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCSection.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCSectionCOFF.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCSectionELF.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCSectionMachO.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCStreamer.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCSubtargetInfo.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCSymbol.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCTargetAsmLexer.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCTargetAsmParser.h
    llvm/branches/AMDILBackend/include/llvm/MC/MCValue.h
    llvm/branches/AMDILBackend/include/llvm/MC/SubtargetFeature.h
    llvm/branches/AMDILBackend/include/llvm/MDBuilder.h
    llvm/branches/AMDILBackend/include/llvm/Metadata.h
    llvm/branches/AMDILBackend/include/llvm/Object/Archive.h
    llvm/branches/AMDILBackend/include/llvm/Object/Binary.h
    llvm/branches/AMDILBackend/include/llvm/Object/COFF.h
    llvm/branches/AMDILBackend/include/llvm/Object/ELF.h
    llvm/branches/AMDILBackend/include/llvm/Object/MachO.h
    llvm/branches/AMDILBackend/include/llvm/Object/MachOFormat.h
    llvm/branches/AMDILBackend/include/llvm/Object/ObjectFile.h
    llvm/branches/AMDILBackend/include/llvm/Operator.h
    llvm/branches/AMDILBackend/include/llvm/Pass.h
    llvm/branches/AMDILBackend/include/llvm/PassAnalysisSupport.h
    llvm/branches/AMDILBackend/include/llvm/PassSupport.h
    llvm/branches/AMDILBackend/include/llvm/Support/AlignOf.h
    llvm/branches/AMDILBackend/include/llvm/Support/Allocator.h
    llvm/branches/AMDILBackend/include/llvm/Support/COFF.h
    llvm/branches/AMDILBackend/include/llvm/Support/CallSite.h
    llvm/branches/AMDILBackend/include/llvm/Support/Casting.h
    llvm/branches/AMDILBackend/include/llvm/Support/CommandLine.h
    llvm/branches/AMDILBackend/include/llvm/Support/Compiler.h
    llvm/branches/AMDILBackend/include/llvm/Support/DataExtractor.h
    llvm/branches/AMDILBackend/include/llvm/Support/ELF.h
    llvm/branches/AMDILBackend/include/llvm/Support/FileOutputBuffer.h
    llvm/branches/AMDILBackend/include/llvm/Support/FileSystem.h
    llvm/branches/AMDILBackend/include/llvm/Support/Format.h
    llvm/branches/AMDILBackend/include/llvm/Support/FormattedStream.h
    llvm/branches/AMDILBackend/include/llvm/Support/GCOV.h
    llvm/branches/AMDILBackend/include/llvm/Support/InstVisitor.h
    llvm/branches/AMDILBackend/include/llvm/Support/IntegersSubset.h
    llvm/branches/AMDILBackend/include/llvm/Support/IntegersSubsetMapping.h
    llvm/branches/AMDILBackend/include/llvm/Support/LEB128.h
    llvm/branches/AMDILBackend/include/llvm/Support/LockFileManager.h
    llvm/branches/AMDILBackend/include/llvm/Support/MathExtras.h
    llvm/branches/AMDILBackend/include/llvm/Support/Memory.h
    llvm/branches/AMDILBackend/include/llvm/Support/MemoryBuffer.h
    llvm/branches/AMDILBackend/include/llvm/Support/Mutex.h
    llvm/branches/AMDILBackend/include/llvm/Support/MutexGuard.h
    llvm/branches/AMDILBackend/include/llvm/Support/NoFolder.h
    llvm/branches/AMDILBackend/include/llvm/Support/PathV1.h
    llvm/branches/AMDILBackend/include/llvm/Support/PathV2.h
    llvm/branches/AMDILBackend/include/llvm/Support/PrettyStackTrace.h
    llvm/branches/AMDILBackend/include/llvm/Support/Program.h
    llvm/branches/AMDILBackend/include/llvm/Support/RWMutex.h
    llvm/branches/AMDILBackend/include/llvm/Support/Regex.h
    llvm/branches/AMDILBackend/include/llvm/Support/Registry.h
    llvm/branches/AMDILBackend/include/llvm/Support/SourceMgr.h
    llvm/branches/AMDILBackend/include/llvm/Support/StreamableMemoryObject.h
    llvm/branches/AMDILBackend/include/llvm/Support/TargetFolder.h
    llvm/branches/AMDILBackend/include/llvm/Support/TargetRegistry.h
    llvm/branches/AMDILBackend/include/llvm/Support/Threading.h
    llvm/branches/AMDILBackend/include/llvm/Support/TimeValue.h
    llvm/branches/AMDILBackend/include/llvm/Support/Timer.h
    llvm/branches/AMDILBackend/include/llvm/Support/ValueHandle.h
    llvm/branches/AMDILBackend/include/llvm/Support/YAMLParser.h
    llvm/branches/AMDILBackend/include/llvm/Support/circular_raw_ostream.h
    llvm/branches/AMDILBackend/include/llvm/Support/raw_os_ostream.h
    llvm/branches/AMDILBackend/include/llvm/Support/raw_ostream.h
    llvm/branches/AMDILBackend/include/llvm/Support/system_error.h
    llvm/branches/AMDILBackend/include/llvm/Support/type_traits.h
    llvm/branches/AMDILBackend/include/llvm/SymbolTableListTraits.h
    llvm/branches/AMDILBackend/include/llvm/TableGen/Error.h
    llvm/branches/AMDILBackend/include/llvm/TableGen/Main.h
    llvm/branches/AMDILBackend/include/llvm/TableGen/Record.h
    llvm/branches/AMDILBackend/include/llvm/Target/Mangler.h
    llvm/branches/AMDILBackend/include/llvm/Target/Target.td
    llvm/branches/AMDILBackend/include/llvm/Target/TargetCallingConv.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetInstrInfo.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetIntrinsicInfo.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetLibraryInfo.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetLowering.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetLoweringObjectFile.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetMachine.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetOpcodes.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetOptions.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetRegisterInfo.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetSchedule.td
    llvm/branches/AMDILBackend/include/llvm/Target/TargetSelectionDAG.td
    llvm/branches/AMDILBackend/include/llvm/Target/TargetSelectionDAGInfo.h
    llvm/branches/AMDILBackend/include/llvm/Target/TargetSubtargetInfo.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/IPO.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/IPO/InlinerPass.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/IPO/PassManagerBuilder.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Instrumentation.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Scalar.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/AddrModeMatcher.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/BasicBlockUtils.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/BuildLibCalls.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/Cloning.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/Local.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/SSAUpdater.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/SimplifyIndVar.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Utils/ValueMapper.h
    llvm/branches/AMDILBackend/include/llvm/Transforms/Vectorize.h
    llvm/branches/AMDILBackend/include/llvm/Type.h
    llvm/branches/AMDILBackend/include/llvm/Use.h
    llvm/branches/AMDILBackend/include/llvm/User.h
    llvm/branches/AMDILBackend/include/llvm/Value.h
    llvm/branches/AMDILBackend/lib/Analysis/AliasAnalysis.cpp
    llvm/branches/AMDILBackend/lib/Analysis/AliasSetTracker.cpp
    llvm/branches/AMDILBackend/lib/Analysis/Analysis.cpp
    llvm/branches/AMDILBackend/lib/Analysis/BasicAliasAnalysis.cpp
    llvm/branches/AMDILBackend/lib/Analysis/BranchProbabilityInfo.cpp
    llvm/branches/AMDILBackend/lib/Analysis/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Analysis/CaptureTracking.cpp
    llvm/branches/AMDILBackend/lib/Analysis/CodeMetrics.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ConstantFolding.cpp
    llvm/branches/AMDILBackend/lib/Analysis/DominanceFrontier.cpp
    llvm/branches/AMDILBackend/lib/Analysis/IPA/CallGraph.cpp
    llvm/branches/AMDILBackend/lib/Analysis/IPA/GlobalsModRef.cpp
    llvm/branches/AMDILBackend/lib/Analysis/IVUsers.cpp
    llvm/branches/AMDILBackend/lib/Analysis/InlineCost.cpp
    llvm/branches/AMDILBackend/lib/Analysis/InstructionSimplify.cpp
    llvm/branches/AMDILBackend/lib/Analysis/LazyValueInfo.cpp
    llvm/branches/AMDILBackend/lib/Analysis/Lint.cpp
    llvm/branches/AMDILBackend/lib/Analysis/Loads.cpp
    llvm/branches/AMDILBackend/lib/Analysis/LoopInfo.cpp
    llvm/branches/AMDILBackend/lib/Analysis/MemoryBuiltins.cpp
    llvm/branches/AMDILBackend/lib/Analysis/MemoryDependenceAnalysis.cpp
    llvm/branches/AMDILBackend/lib/Analysis/NoAliasAnalysis.cpp
    llvm/branches/AMDILBackend/lib/Analysis/PHITransAddr.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ProfileEstimatorPass.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ProfileInfo.cpp
    llvm/branches/AMDILBackend/lib/Analysis/RegionInfo.cpp
    llvm/branches/AMDILBackend/lib/Analysis/RegionPass.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ScalarEvolution.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ScalarEvolutionExpander.cpp
    llvm/branches/AMDILBackend/lib/Analysis/Trace.cpp
    llvm/branches/AMDILBackend/lib/Analysis/ValueTracking.cpp
    llvm/branches/AMDILBackend/lib/Archive/ArchiveInternals.h
    llvm/branches/AMDILBackend/lib/Archive/ArchiveReader.cpp
    llvm/branches/AMDILBackend/lib/AsmParser/LLLexer.cpp
    llvm/branches/AMDILBackend/lib/AsmParser/LLParser.cpp
    llvm/branches/AMDILBackend/lib/AsmParser/LLParser.h
    llvm/branches/AMDILBackend/lib/AsmParser/LLToken.h
    llvm/branches/AMDILBackend/lib/Bitcode/Reader/BitcodeReader.cpp
    llvm/branches/AMDILBackend/lib/Bitcode/Reader/BitcodeReader.h
    llvm/branches/AMDILBackend/lib/Bitcode/Writer/BitcodeWriter.cpp
    llvm/branches/AMDILBackend/lib/Bitcode/Writer/ValueEnumerator.h
    llvm/branches/AMDILBackend/lib/CodeGen/AggressiveAntiDepBreaker.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AllocationOrder.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/Analysis.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/ARMException.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DIE.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DIE.h
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfAccelTable.h
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfDebug.h
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfException.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/DwarfException.h
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/AsmPrinter/Win64Exception.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/BranchFolding.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/CodeGen/CalcSpillWeights.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/CallingConvLower.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/CodeGen.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/CodePlacementOpt.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/CriticalAntiDepBreaker.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/DeadMachineInstructionElim.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/EarlyIfConversion.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ExecutionDepsFix.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ExpandPostRAPseudos.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/GCStrategy.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/IfConversion.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/InlineSpiller.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/IntrinsicLowering.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LLVMTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveDebugVariables.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveInterval.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveIntervalAnalysis.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveIntervalUnion.h
    llvm/branches/AMDILBackend/lib/CodeGen/LiveRangeCalc.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveRangeEdit.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveRegMatrix.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveRegMatrix.h
    llvm/branches/AMDILBackend/lib/CodeGen/LiveStackAnalysis.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/LiveVariables.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineBasicBlock.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineBlockPlacement.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineBranchProbabilityInfo.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineCSE.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineCopyPropagation.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineFunction.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineFunctionPrinterPass.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineInstr.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineInstrBundle.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineLICM.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineLoopInfo.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineModuleInfo.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineModuleInfoImpls.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineSSAUpdater.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineScheduler.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineSink.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineTraceMetrics.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/MachineTraceMetrics.h
    llvm/branches/AMDILBackend/lib/CodeGen/MachineVerifier.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/Passes.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/PeepholeOptimizer.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/PostRASchedulerList.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ProcessImplicitDefs.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/PrologEpilogInserter.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegAllocBasic.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegAllocFast.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegAllocGreedy.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegAllocPBQP.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegisterClassInfo.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegisterCoalescer.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegisterCoalescer.h
    llvm/branches/AMDILBackend/lib/CodeGen/RegisterPressure.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/RegisterScavenging.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ScheduleDAG.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ScheduleDAGInstrs.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ScheduleDAGPrinter.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ScoreboardHazardRecognizer.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/FastISel.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeTypes.h
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/SDNodeOrdering.h
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/TargetLowering.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SelectionDAG/TargetSelectionDAGInfo.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/ShrinkWrapping.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SjLjEHPrepare.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SlotIndexes.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/SplitKit.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/StackProtector.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/StackSlotColoring.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/StrongPHIElimination.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/TailDuplication.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/TargetInstrInfoImpl.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/TwoAddressInstructionPass.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/VirtRegMap.cpp
    llvm/branches/AMDILBackend/lib/CodeGen/VirtRegMap.h
    llvm/branches/AMDILBackend/lib/DebugInfo/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/DebugInfo/DIContext.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFCompileUnit.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFCompileUnit.h
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFContext.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFContext.h
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFDebugAranges.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFDebugInfoEntry.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFDebugInfoEntry.h
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFDebugLine.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFDebugLine.h
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFFormValue.cpp
    llvm/branches/AMDILBackend/lib/DebugInfo/DWARFFormValue.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/ExecutionEngine.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/ExecutionEngineBindings.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/IntelJITEventListener.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/IntelJITEvents/Makefile
    llvm/branches/AMDILBackend/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/Interpreter/Interpreter.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/Interpreter/Interpreter.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/JIT/JIT.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/JIT/JITDwarfEmitter.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/JIT/JITEmitter.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/JIT/JITMemoryManager.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/MCJIT/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/ExecutionEngine/MCJIT/MCJIT.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/MCJIT/MCJIT.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/GDBRegistrar.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/JITRegistrar.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
    llvm/branches/AMDILBackend/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h
    llvm/branches/AMDILBackend/lib/ExecutionEngine/TargetSelect.cpp
    llvm/branches/AMDILBackend/lib/MC/ELFObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/MC/MCAsmBackend.cpp
    llvm/branches/AMDILBackend/lib/MC/MCAsmInfo.cpp
    llvm/branches/AMDILBackend/lib/MC/MCAsmInfoCOFF.cpp
    llvm/branches/AMDILBackend/lib/MC/MCAsmInfoDarwin.cpp
    llvm/branches/AMDILBackend/lib/MC/MCAsmStreamer.cpp
    llvm/branches/AMDILBackend/lib/MC/MCAssembler.cpp
    llvm/branches/AMDILBackend/lib/MC/MCContext.cpp
    llvm/branches/AMDILBackend/lib/MC/MCDisassembler/Disassembler.cpp
    llvm/branches/AMDILBackend/lib/MC/MCDisassembler/EDDisassembler.cpp
    llvm/branches/AMDILBackend/lib/MC/MCDwarf.cpp
    llvm/branches/AMDILBackend/lib/MC/MCELFObjectTargetWriter.cpp
    llvm/branches/AMDILBackend/lib/MC/MCELFStreamer.cpp
    llvm/branches/AMDILBackend/lib/MC/MCExpr.cpp
    llvm/branches/AMDILBackend/lib/MC/MCInst.cpp
    llvm/branches/AMDILBackend/lib/MC/MCInstPrinter.cpp
    llvm/branches/AMDILBackend/lib/MC/MCLabel.cpp
    llvm/branches/AMDILBackend/lib/MC/MCMachOStreamer.cpp
    llvm/branches/AMDILBackend/lib/MC/MCObjectFileInfo.cpp
    llvm/branches/AMDILBackend/lib/MC/MCObjectStreamer.cpp
    llvm/branches/AMDILBackend/lib/MC/MCParser/AsmLexer.cpp
    llvm/branches/AMDILBackend/lib/MC/MCParser/AsmParser.cpp
    llvm/branches/AMDILBackend/lib/MC/MCParser/ELFAsmParser.cpp
    llvm/branches/AMDILBackend/lib/MC/MCParser/MCAsmLexer.cpp
    llvm/branches/AMDILBackend/lib/MC/MCParser/MCAsmParser.cpp
    llvm/branches/AMDILBackend/lib/MC/MCParser/MCTargetAsmParser.cpp
    llvm/branches/AMDILBackend/lib/MC/MCRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/MC/MCStreamer.cpp
    llvm/branches/AMDILBackend/lib/MC/MCSubtargetInfo.cpp
    llvm/branches/AMDILBackend/lib/MC/MCSymbol.cpp
    llvm/branches/AMDILBackend/lib/MC/MCValue.cpp
    llvm/branches/AMDILBackend/lib/MC/MachObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/MC/SubtargetFeature.cpp
    llvm/branches/AMDILBackend/lib/MC/WinCOFFStreamer.cpp
    llvm/branches/AMDILBackend/lib/Object/COFFObjectFile.cpp
    llvm/branches/AMDILBackend/lib/Object/MachOObjectFile.cpp
    llvm/branches/AMDILBackend/lib/Support/APFloat.cpp
    llvm/branches/AMDILBackend/lib/Support/Atomic.cpp
    llvm/branches/AMDILBackend/lib/Support/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Support/CommandLine.cpp
    llvm/branches/AMDILBackend/lib/Support/DAGDeltaAlgorithm.cpp
    llvm/branches/AMDILBackend/lib/Support/DataExtractor.cpp
    llvm/branches/AMDILBackend/lib/Support/DataStream.cpp
    llvm/branches/AMDILBackend/lib/Support/DynamicLibrary.cpp
    llvm/branches/AMDILBackend/lib/Support/Errno.cpp
    llvm/branches/AMDILBackend/lib/Support/FoldingSet.cpp
    llvm/branches/AMDILBackend/lib/Support/Host.cpp
    llvm/branches/AMDILBackend/lib/Support/LockFileManager.cpp
    llvm/branches/AMDILBackend/lib/Support/Makefile
    llvm/branches/AMDILBackend/lib/Support/Memory.cpp
    llvm/branches/AMDILBackend/lib/Support/MemoryBuffer.cpp
    llvm/branches/AMDILBackend/lib/Support/SmallVector.cpp
    llvm/branches/AMDILBackend/lib/Support/StreamableMemoryObject.cpp
    llvm/branches/AMDILBackend/lib/Support/StringMap.cpp
    llvm/branches/AMDILBackend/lib/Support/StringRef.cpp
    llvm/branches/AMDILBackend/lib/Support/Triple.cpp
    llvm/branches/AMDILBackend/lib/Support/Unix/Memory.inc
    llvm/branches/AMDILBackend/lib/Support/Unix/Path.inc
    llvm/branches/AMDILBackend/lib/Support/Unix/PathV2.inc
    llvm/branches/AMDILBackend/lib/Support/Unix/Signals.inc
    llvm/branches/AMDILBackend/lib/Support/Windows/Memory.inc
    llvm/branches/AMDILBackend/lib/Support/Windows/PathV2.inc
    llvm/branches/AMDILBackend/lib/Support/YAMLParser.cpp
    llvm/branches/AMDILBackend/lib/Support/raw_ostream.cpp
    llvm/branches/AMDILBackend/lib/Support/regexec.c
    llvm/branches/AMDILBackend/lib/Support/system_error.cpp
    llvm/branches/AMDILBackend/lib/TableGen/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/TableGen/Error.cpp
    llvm/branches/AMDILBackend/lib/TableGen/Main.cpp
    llvm/branches/AMDILBackend/lib/TableGen/Makefile
    llvm/branches/AMDILBackend/lib/TableGen/Record.cpp
    llvm/branches/AMDILBackend/lib/TableGen/TGParser.cpp
    llvm/branches/AMDILBackend/lib/TableGen/TGParser.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARM.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARM.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMAsmPrinter.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMBaseInstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMBaseInstrInfo.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMBaseRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMBaseRegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMCallingConv.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMCodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMConstantIslandPass.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMConstantPoolValue.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMExpandPseudoInsts.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMFastISel.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMHazardRecognizer.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMISelDAGToDAG.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMISelLowering.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMInstrFormats.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMInstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMInstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMInstrNEON.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMInstrThumb.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMInstrThumb2.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMInstrVFP.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMJITInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMMachineFunctionInfo.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMRegisterInfo.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMSchedule.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMScheduleA9.td
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMSelectionDAGInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMSubtarget.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMSubtarget.h
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/ARMTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
    llvm/branches/AMDILBackend/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/MLxExpansionPass.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/Thumb2InstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/ARM/Thumb2InstrInfo.h
    llvm/branches/AMDILBackend/lib/Target/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/CellSPU/SPUAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/CellSPU/SPUFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
    llvm/branches/AMDILBackend/lib/Target/CellSPU/SPUSubtarget.h
    llvm/branches/AMDILBackend/lib/Target/CellSPU/SPUTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/CellSPU/SPUTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/CppBackend/CPPBackend.cpp
    llvm/branches/AMDILBackend/lib/Target/CppBackend/CPPTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/Hexagon/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonCallingConvLower.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonInstrFormats.td
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonInstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonInstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonNewValueJump.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonPeephole.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonRegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonRemoveSZExtArgs.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonSchedule.td
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonScheduleV4.td
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonSubtarget.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
    llvm/branches/AMDILBackend/lib/Target/Hexagon/HexagonVarargsCallingConvention.h
    llvm/branches/AMDILBackend/lib/Target/Hexagon/MCTargetDesc/HexagonMCAsmInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/AsmParser/MBlazeAsmParser.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MBlazeTargetObjectFile.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MCTargetDesc/MBlazeAsmBackend.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MCTargetDesc/MBlazeMCCodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.h
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430FrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430FrameLowering.h
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430ISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430ISelLowering.h
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430RegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430RegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430TargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/MSP430/MSP430TargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/Mangler.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/AsmParser/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsBaseInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h
    llvm/branches/AMDILBackend/lib/Target/Mips/Makefile
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips.td
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips16FrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips16FrameLowering.h
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips16InstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips16InstrInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips16InstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips16RegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips16RegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/Mips64InstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsAnalyzeImmediate.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsAsmPrinter.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsCallingConv.td
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsCodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsDelaySlotFiller.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsFrameLowering.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsISelDAGToDAG.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsISelLowering.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsInstrFPU.td
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsInstrFormats.td
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsInstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsInstrInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsInstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsJITInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsJITInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsLongBranch.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsMCInstLower.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsMCInstLower.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsMachineFunction.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsMachineFunction.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsRegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsRegisterInfo.td
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsSEFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsSEInstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsSEInstrInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsSERegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsSERegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsSubtarget.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsSubtarget.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/Mips/MipsTargetObjectFile.cpp
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTX.td
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXAllocaHoisting.h
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXISelLowering.h
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXLowerAggrCopies.h
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXSubtarget.cpp
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXSubtarget.h
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/NVPTX/NVPTXTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/MCTargetDesc/PPCFixupKinds.h
    llvm/branches/AMDILBackend/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPC.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCCallingConv.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCFrameLowering.h
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCISelLowering.h
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCInstr64Bit.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCInstrAltivec.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCInstrFormats.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCInstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCInstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCRegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCSchedule.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCSchedule440.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCScheduleA2.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCScheduleG3.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCScheduleG4.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCScheduleG4Plus.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCScheduleG5.td
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCSubtarget.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCSubtarget.h
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/PowerPC/PPCTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/README.txt
    llvm/branches/AMDILBackend/lib/Target/Sparc/SparcFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/Sparc/SparcISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/Sparc/SparcInstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/Sparc/SparcTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/Sparc/SparcTargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/Target.cpp
    llvm/branches/AMDILBackend/lib/Target/TargetLibraryInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/TargetLoweringObjectFile.cpp
    llvm/branches/AMDILBackend/lib/Target/TargetMachineC.cpp
    llvm/branches/AMDILBackend/lib/Target/TargetRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/AsmParser/X86AsmLexer.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/AsmParser/X86AsmParser.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Target/X86/Disassembler/X86Disassembler.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/Disassembler/X86Disassembler.h
    llvm/branches/AMDILBackend/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c
    llvm/branches/AMDILBackend/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
    llvm/branches/AMDILBackend/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h
    llvm/branches/AMDILBackend/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h
    llvm/branches/AMDILBackend/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
    llvm/branches/AMDILBackend/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/README-SSE.txt
    llvm/branches/AMDILBackend/lib/Target/X86/X86.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86AsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86AsmPrinter.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86COFFMachineModuleInfo.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86CallingConv.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86CodeEmitter.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86FastISel.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86FloatingPoint.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86FrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86ISelDAGToDAG.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86ISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86ISelLowering.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrCompiler.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrControl.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrFMA.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrFormats.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrFragmentsSIMD.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrInfo.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrMMX.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrSSE.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrShiftRotate.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86InstrXOP.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86JITInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86MCInstLower.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86RegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86RegisterInfo.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86RegisterInfo.td
    llvm/branches/AMDILBackend/lib/Target/X86/X86SelectionDAGInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86Subtarget.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86Subtarget.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86TargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/X86/X86TargetMachine.h
    llvm/branches/AMDILBackend/lib/Target/X86/X86VZeroUpper.cpp
    llvm/branches/AMDILBackend/lib/Target/XCore/XCoreAsmPrinter.cpp
    llvm/branches/AMDILBackend/lib/Target/XCore/XCoreFrameLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/XCore/XCoreISelLowering.cpp
    llvm/branches/AMDILBackend/lib/Target/XCore/XCoreInstrInfo.td
    llvm/branches/AMDILBackend/lib/Target/XCore/XCoreRegisterInfo.cpp
    llvm/branches/AMDILBackend/lib/Target/XCore/XCoreTargetMachine.cpp
    llvm/branches/AMDILBackend/lib/Target/XCore/XCoreTargetMachine.h
    llvm/branches/AMDILBackend/lib/Transforms/IPO/ArgumentPromotion.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Transforms/IPO/ConstantMerge.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/DeadArgumentElimination.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/ExtractGV.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/FunctionAttrs.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/GlobalOpt.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/IPO.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/InlineAlways.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/InlineSimple.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/Inliner.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/Internalize.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/MergeFunctions.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/PassManagerBuilder.cpp
    llvm/branches/AMDILBackend/lib/Transforms/IPO/PruneEH.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombine.h
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineAddSub.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineCalls.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineCasts.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineCompares.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombinePHI.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineSelect.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineShifts.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstCombineWorklist.h
    llvm/branches/AMDILBackend/lib/Transforms/InstCombine/InstructionCombining.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/AddressSanitizer.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/BoundsChecking.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/GCOVProfiling.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/MaximumSpanningTree.h
    llvm/branches/AMDILBackend/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/CodeGenPrepare.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/ConstantProp.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/DCE.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/DeadStoreElimination.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/EarlyCSE.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/GVN.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/GlobalMerge.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/IndVarSimplify.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/JumpThreading.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/LICM.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/LoopInstSimplify.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/LoopRotation.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/LoopStrengthReduce.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/LoopUnrollPass.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/LoopUnswitch.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/MemCpyOptimizer.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/ObjCARC.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/Reassociate.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/SCCP.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/Scalar.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/ScalarReplAggregates.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/SimplifyCFGPass.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Scalar/SimplifyLibCalls.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/AddrModeMatcher.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/BasicBlockUtils.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/BuildLibCalls.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Transforms/Utils/CloneFunction.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/CodeExtractor.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/InlineFunction.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/LCSSA.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/Local.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/LoopSimplify.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/SSAUpdater.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/SimplifyCFG.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/SimplifyIndVar.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/SimplifyInstructions.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/Utils.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Utils/ValueMapper.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Vectorize/BBVectorize.cpp
    llvm/branches/AMDILBackend/lib/Transforms/Vectorize/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/Transforms/Vectorize/Vectorize.cpp
    llvm/branches/AMDILBackend/lib/VMCore/AsmWriter.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Attributes.cpp
    llvm/branches/AMDILBackend/lib/VMCore/AutoUpgrade.cpp
    llvm/branches/AMDILBackend/lib/VMCore/CMakeLists.txt
    llvm/branches/AMDILBackend/lib/VMCore/ConstantFold.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Constants.cpp
    llvm/branches/AMDILBackend/lib/VMCore/ConstantsContext.h
    llvm/branches/AMDILBackend/lib/VMCore/Core.cpp
    llvm/branches/AMDILBackend/lib/VMCore/DIBuilder.cpp
    llvm/branches/AMDILBackend/lib/VMCore/DebugInfo.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Dominators.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Function.cpp
    llvm/branches/AMDILBackend/lib/VMCore/GCOV.cpp
    llvm/branches/AMDILBackend/lib/VMCore/IRBuilder.cpp
    llvm/branches/AMDILBackend/lib/VMCore/InlineAsm.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Instructions.cpp
    llvm/branches/AMDILBackend/lib/VMCore/LLVMContext.cpp
    llvm/branches/AMDILBackend/lib/VMCore/LLVMContextImpl.cpp
    llvm/branches/AMDILBackend/lib/VMCore/LLVMContextImpl.h
    llvm/branches/AMDILBackend/lib/VMCore/Makefile
    llvm/branches/AMDILBackend/lib/VMCore/Metadata.cpp
    llvm/branches/AMDILBackend/lib/VMCore/PassManager.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Type.cpp
    llvm/branches/AMDILBackend/lib/VMCore/User.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Value.cpp
    llvm/branches/AMDILBackend/lib/VMCore/ValueTypes.cpp
    llvm/branches/AMDILBackend/lib/VMCore/Verifier.cpp
    llvm/branches/AMDILBackend/projects/CMakeLists.txt
    llvm/branches/AMDILBackend/projects/sample/Makefile.llvm.rules
    llvm/branches/AMDILBackend/projects/sample/autoconf/configure.ac
    llvm/branches/AMDILBackend/projects/sample/configure
    llvm/branches/AMDILBackend/runtime/libprofile/CMakeLists.txt
    llvm/branches/AMDILBackend/runtime/libprofile/CommonProfiling.c
    llvm/branches/AMDILBackend/runtime/libprofile/Makefile
    llvm/branches/AMDILBackend/runtime/libprofile/Profiling.h
    llvm/branches/AMDILBackend/test/Analysis/BasicAA/nocapture.ll
    llvm/branches/AMDILBackend/test/Analysis/BranchProbabilityInfo/basic.ll
    llvm/branches/AMDILBackend/test/Analysis/ScalarEvolution/2012-05-29-MulAddRec.ll
    llvm/branches/AMDILBackend/test/Assembler/2008-09-02-FunctionNotes2.ll
    llvm/branches/AMDILBackend/test/Bindings/Ocaml/ipo_opts.ml
    llvm/branches/AMDILBackend/test/Bindings/Ocaml/scalar_opts.ml
    llvm/branches/AMDILBackend/test/Bindings/Ocaml/target.ml
    llvm/branches/AMDILBackend/test/Bindings/Ocaml/vmcore.ml
    llvm/branches/AMDILBackend/test/Bitcode/blockaddress.ll
    llvm/branches/AMDILBackend/test/BugPoint/crash-narrowfunctiontest.ll
    llvm/branches/AMDILBackend/test/BugPoint/metadata.ll
    llvm/branches/AMDILBackend/test/BugPoint/remove_arguments_test.ll
    llvm/branches/AMDILBackend/test/CMakeLists.txt
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2010-12-07-PEIBug.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2011-03-15-LdStMultipleBug.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2011-06-16-TailCallByVal.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2011-10-26-memset-with-neon.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/2011-11-29-128bitArithmetics.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/arm-modifier.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/atomic-op.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/avoid-cpsr-rmw.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/carry.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/coalesce-subregs.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/constants.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/debug-info-branch-folding.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/div.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/divmod.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fabss.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fadds.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fast-isel-call.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fast-isel.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fdivs.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fmuls.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fp16.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fp_convert.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/fsubs.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/ifcvt1.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/ifcvt5.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/ldr_post.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/ldr_pre.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/mls.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/neon_ld2.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/opt-shuff-tstore.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/reg_sequence.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/select.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/select_xform.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/struct_byval.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/sub-cmp-peephole.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/sub.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/subreg-remat.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/trap.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/twoaddrinstr.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/unaligned_load_store.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/vbsl-constant.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/vbsl.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/vdup.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/vector-extend-narrow.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/vext.ll
    llvm/branches/AMDILBackend/test/CodeGen/ARM/vget_lane.ll
    llvm/branches/AMDILBackend/test/CodeGen/CellSPU/icmp16.ll
    llvm/branches/AMDILBackend/test/CodeGen/Generic/donothing.ll
    llvm/branches/AMDILBackend/test/CodeGen/Hexagon/args.ll
    llvm/branches/AMDILBackend/test/CodeGen/Hexagon/newvaluestore.ll
    llvm/branches/AMDILBackend/test/CodeGen/Hexagon/static.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/atomic.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/brdelayslot.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/helloworld.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/largeimm1.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/largeimmprinting.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/longbranch.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/null.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/o32_cc_byval.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/tls-alias.ll
    llvm/branches/AMDILBackend/test/CodeGen/Mips/tls.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/2010-03-09-indirect-call.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/big-endian-formal-args.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/coalesce-ext.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/inlineasm-copy.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/int-fp-conv-1.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/lbzux.ll
    llvm/branches/AMDILBackend/test/CodeGen/PowerPC/ppc64-linux-func-size.ll
    llvm/branches/AMDILBackend/test/CodeGen/SPARC/2011-01-11-CC.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/buildvector-crash.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/carry.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/cortex-fp.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/div.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/machine-licm.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/thumb2-mla.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/thumb2-select_xform.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/thumb2-smla.ll
    llvm/branches/AMDILBackend/test/CodeGen/Thumb2/thumb2-uxtb.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2006-11-12-CSRetCC.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2006-11-17-IllegalMove.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2008-01-08-SchedulerCrash.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2010-01-08-Atomic64Bug.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2011-08-29-InitOrder.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-01-18-vbitcast.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-03-15-build_vector_wl.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-04-26-sdglue.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/2012-07-10-extload64.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/add-of-carry.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/alignment-2.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic_add.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/atomic_op.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/avx-basic.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/avx-intrinsics-x86.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/avx-shuffle.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/avx-vextractf128.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/avx2-shuffle.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/crash.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/early-ifcvt.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fast-cc-callee-pops.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fast-cc-merge-stack-adj.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fast-cc-pass-in-regs.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fast-isel-x86-64.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fast-isel-x86.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fma.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fma3-intrinsics.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fma4-intrinsics-x86_64.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fma_patterns.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fold-load.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/fp-trunc.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/full-lsr.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/inline-asm-tied.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/inline-asm.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/jump_sign.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/lsr-loop-exit-cond.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/machine-cse.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/memcpy.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/misched-new.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/mmx-builtins.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/phys_subreg_coalesce-3.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pic_jumptable.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/pointer-vector.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/promote.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/ptr-rotate.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/red-zone2.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/rot32.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/rot64.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/rotate2.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/select.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/sincos.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/smul-with-overflow.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/sse-minmax.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/tailcall-64.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/targetLoweringGeneric.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/tls-pic.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/trunc-ext-ld-st.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/vec_compare-2.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/vec_fpext.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/vec_shuffle-26.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/vec_shuffle-30.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/vec_ss_load_fold.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/widen_cast-1.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/widen_load-1.ll
    llvm/branches/AMDILBackend/test/CodeGen/X86/widen_load-2.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/DW_AT_byte_size.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/concrete_out_of_line.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/enum-fwd-decl.ll
    llvm/branches/AMDILBackend/test/DebugInfo/X86/stringpool.ll
    llvm/branches/AMDILBackend/test/DebugInfo/bug_null_debuginfo.ll
    llvm/branches/AMDILBackend/test/DebugInfo/dwarfdump-test.test
    llvm/branches/AMDILBackend/test/ExecutionEngine/2002-12-16-ArgTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2002-12-16-ArgTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-01-04-ArgumentBug.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-01-04-LoopTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-01-04-PhiTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-01-09-SARTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-01-10-FUCOM.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-01-15-AlignmentTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-05-06-LivenessClobber.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-05-07-ArgumentTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-05-11-PHIRegAllocBug.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-06-04-bzip2-bug.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-06-05-PHIBug.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-08-15-AllocaAssertion.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-08-21-EnvironmentTest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-08-23-RegisterAllocatePhysReg.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2005-12-02-TailCallBug.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2007-12-10-APIntLoadStore.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/2010-01-15-UndefValue.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/fpbitcast.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/hello.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/hello2.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/lit.local.cfg
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/simplesttest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/simpletest.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/stubs.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-arith.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-branch.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-call-no-external-funcs.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-call.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-cast.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-common-symbols.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-constantexpr.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-fp-no-external-funcs.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-fp.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-global-init-nonzero.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-global.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-loadstore.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-local.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-logical.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-loop.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-phi.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-ret.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-return.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-setcond-fp.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-setcond-int.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/MCJIT/test-shift.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/lit.local.cfg
    llvm/branches/AMDILBackend/test/ExecutionEngine/test-fp-no-external-funcs.ll
    llvm/branches/AMDILBackend/test/ExecutionEngine/test-fp.ll
    llvm/branches/AMDILBackend/test/Feature/linker_private_linkages.ll
    llvm/branches/AMDILBackend/test/Instrumentation/AddressSanitizer/basic.ll
    llvm/branches/AMDILBackend/test/Instrumentation/AddressSanitizer/instrument_global.ll
    llvm/branches/AMDILBackend/test/Instrumentation/ThreadSanitizer/atomic.ll
    llvm/branches/AMDILBackend/test/MC/ARM/arm-arithmetic-aliases.s
    llvm/branches/AMDILBackend/test/MC/ARM/basic-thumb-instructions.s
    llvm/branches/AMDILBackend/test/MC/ARM/diagnostics.s
    llvm/branches/AMDILBackend/test/MC/AsmParser/directive_lcomm.s
    llvm/branches/AMDILBackend/test/MC/AsmParser/labels.s
    llvm/branches/AMDILBackend/test/MC/AsmParser/macro-args.s
    llvm/branches/AMDILBackend/test/MC/AsmParser/macro-rept-err1.s
    llvm/branches/AMDILBackend/test/MC/AsmParser/macros.s
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/invalid-VLD1DUPq8_UPD-arm.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/neon.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/neont2.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/thumb-printf.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/thumb-tests.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/thumb1.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/ARM/thumb2.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/Mips/mips64.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/Mips/mips64_le.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/Mips/mips64r2.txt
    llvm/branches/AMDILBackend/test/MC/Disassembler/Mips/mips64r2_le.txt
    llvm/branches/AMDILBackend/test/MC/MachO/lit.local.cfg
    llvm/branches/AMDILBackend/test/MC/Mips/elf-N64.ll
    llvm/branches/AMDILBackend/test/MC/Mips/higher_highest.ll
    llvm/branches/AMDILBackend/test/MC/Mips/mips64shift.ll
    llvm/branches/AMDILBackend/test/MC/Mips/multi-64bit-func.ll
    llvm/branches/AMDILBackend/test/MC/Mips/sext_64_32.ll
    llvm/branches/AMDILBackend/test/MC/X86/intel-syntax-2.s
    llvm/branches/AMDILBackend/test/MC/X86/x86-64.s
    llvm/branches/AMDILBackend/test/Makefile
    llvm/branches/AMDILBackend/test/Object/nm-shared-object.test
    llvm/branches/AMDILBackend/test/Object/objdump-relocations.test
    llvm/branches/AMDILBackend/test/Object/objdump-symbol-table.test
    llvm/branches/AMDILBackend/test/Other/extract.ll
    llvm/branches/AMDILBackend/test/Other/lint.ll
    llvm/branches/AMDILBackend/test/Other/lit.local.cfg
    llvm/branches/AMDILBackend/test/TableGen/if.td
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/cycle.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/lit.local.cfg
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/loop1.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/search-limit.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/simple-int.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/simple-ldstr-ptrs.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/simple-ldstr.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/simple-sel.ll
    llvm/branches/AMDILBackend/test/Transforms/BBVectorize/simple.ll
    llvm/branches/AMDILBackend/test/Transforms/CodeGenPrepare/basic.ll
    llvm/branches/AMDILBackend/test/Transforms/ConstProp/loads.ll
    llvm/branches/AMDILBackend/test/Transforms/CorrelatedValuePropagation/crash.ll
    llvm/branches/AMDILBackend/test/Transforms/DeadStoreElimination/simple.ll
    llvm/branches/AMDILBackend/test/Transforms/GVN/crash.ll
    llvm/branches/AMDILBackend/test/Transforms/GVN/rle.ll
    llvm/branches/AMDILBackend/test/Transforms/GlobalOpt/load-store-global.ll
    llvm/branches/AMDILBackend/test/Transforms/IndVarSimplify/2004-04-05-InvokeCastCrash.ll
    llvm/branches/AMDILBackend/test/Transforms/IndVarSimplify/crash.ll
    llvm/branches/AMDILBackend/test/Transforms/IndVarSimplify/eliminate-comparison.ll
    llvm/branches/AMDILBackend/test/Transforms/IndVarSimplify/no-iv-rewrite.ll
    llvm/branches/AMDILBackend/test/Transforms/Inline/always-inline.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/2012-07-25-LoadPart.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/align-addr.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/alloca.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/and-fcmp.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/cast.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/crash.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/div-shift.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/fcmp.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/fold-vector-select.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/icmp.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/memcpy.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/objsize.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/select.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/udiv-simplify-bug-1.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/vec_demanded_elts.ll
    llvm/branches/AMDILBackend/test/Transforms/InstCombine/vec_shuffle.ll
    llvm/branches/AMDILBackend/test/Transforms/InstSimplify/compare.ll
    llvm/branches/AMDILBackend/test/Transforms/Internalize/2008-05-09-AllButMain.ll
    llvm/branches/AMDILBackend/test/Transforms/Internalize/2009-01-05-InternalizeAliases.ll
    llvm/branches/AMDILBackend/test/Transforms/JumpThreading/crash.ll
    llvm/branches/AMDILBackend/test/Transforms/JumpThreading/select.ll
    llvm/branches/AMDILBackend/test/Transforms/LICM/2003-12-11-SinkingToPHI.ll
    llvm/branches/AMDILBackend/test/Transforms/LICM/hoisting.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopIdiom/basic.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopStrengthReduce/2011-10-03-CritEdgeMerge.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopStrengthReduce/ARM/2012-06-15-lsr-noaddrmode.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopUnroll/pr11361.ll
    llvm/branches/AMDILBackend/test/Transforms/LoopUnswitch/2011-06-02-CritSwitch.ll
    llvm/branches/AMDILBackend/test/Transforms/MemCpyOpt/2008-03-13-ReturnSlotBitcast.ll
    llvm/branches/AMDILBackend/test/Transforms/MemCpyOpt/align.ll
    llvm/branches/AMDILBackend/test/Transforms/MemCpyOpt/form-memset.ll
    llvm/branches/AMDILBackend/test/Transforms/ObjCARC/basic.ll
    llvm/branches/AMDILBackend/test/Transforms/ObjCARC/invoke.ll
    llvm/branches/AMDILBackend/test/Transforms/ObjCARC/nested.ll
    llvm/branches/AMDILBackend/test/Transforms/Reassociate/crash.ll
    llvm/branches/AMDILBackend/test/Transforms/SCCP/loadtest.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/phi-undef-loadstore.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyCFG/preserve-branchweights.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/FFS.ll
    llvm/branches/AMDILBackend/test/Transforms/SimplifyLibCalls/floor.ll
    llvm/branches/AMDILBackend/test/Verifier/invoke.ll
    llvm/branches/AMDILBackend/test/lit.cfg
    llvm/branches/AMDILBackend/test/lit.site.cfg.in
    llvm/branches/AMDILBackend/tools/   (props changed)
    llvm/branches/AMDILBackend/tools/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/LLVMBuild.txt
    llvm/branches/AMDILBackend/tools/Makefile
    llvm/branches/AMDILBackend/tools/bugpoint/ExtractFunction.cpp
    llvm/branches/AMDILBackend/tools/bugpoint/OptimizerDriver.cpp
    llvm/branches/AMDILBackend/tools/gold/Makefile
    llvm/branches/AMDILBackend/tools/gold/gold-plugin.cpp
    llvm/branches/AMDILBackend/tools/llc/llc.cpp
    llvm/branches/AMDILBackend/tools/lli/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/lli/LLVMBuild.txt
    llvm/branches/AMDILBackend/tools/lli/Makefile
    llvm/branches/AMDILBackend/tools/lli/lli.cpp
    llvm/branches/AMDILBackend/tools/llvm-ar/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/llvm-ar/Makefile
    llvm/branches/AMDILBackend/tools/llvm-ar/llvm-ar.cpp
    llvm/branches/AMDILBackend/tools/llvm-as/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/llvm-bcanalyzer/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
    llvm/branches/AMDILBackend/tools/llvm-config/Makefile
    llvm/branches/AMDILBackend/tools/llvm-dis/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/llvm-dwarfdump/llvm-dwarfdump.cpp
    llvm/branches/AMDILBackend/tools/llvm-extract/llvm-extract.cpp
    llvm/branches/AMDILBackend/tools/llvm-mc/llvm-mc.cpp
    llvm/branches/AMDILBackend/tools/llvm-nm/llvm-nm.cpp
    llvm/branches/AMDILBackend/tools/llvm-objdump/llvm-objdump.cpp
    llvm/branches/AMDILBackend/tools/llvm-ranlib/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/llvm-ranlib/Makefile
    llvm/branches/AMDILBackend/tools/llvm-ranlib/llvm-ranlib.cpp
    llvm/branches/AMDILBackend/tools/llvm-rtdyld/llvm-rtdyld.cpp
    llvm/branches/AMDILBackend/tools/llvm-stress/llvm-stress.cpp
    llvm/branches/AMDILBackend/tools/lto/LTOCodeGenerator.cpp
    llvm/branches/AMDILBackend/tools/lto/LTOModule.cpp
    llvm/branches/AMDILBackend/tools/lto/Makefile
    llvm/branches/AMDILBackend/tools/lto/lto.exports
    llvm/branches/AMDILBackend/tools/opt/CMakeLists.txt
    llvm/branches/AMDILBackend/tools/opt/LLVMBuild.txt
    llvm/branches/AMDILBackend/tools/opt/Makefile
    llvm/branches/AMDILBackend/tools/opt/opt.cpp
    llvm/branches/AMDILBackend/unittests/ADT/APFloatTest.cpp
    llvm/branches/AMDILBackend/unittests/ADT/BitVectorTest.cpp
    llvm/branches/AMDILBackend/unittests/ADT/CMakeLists.txt
    llvm/branches/AMDILBackend/unittests/ADT/DenseMapTest.cpp
    llvm/branches/AMDILBackend/unittests/ADT/DenseSetTest.cpp
    llvm/branches/AMDILBackend/unittests/ADT/StringRefTest.cpp
    llvm/branches/AMDILBackend/unittests/ADT/TripleTest.cpp
    llvm/branches/AMDILBackend/unittests/Analysis/ScalarEvolutionTest.cpp
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/CMakeLists.txt
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/JIT/CMakeLists.txt
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/JIT/IntelJITEventListenerTest.cpp
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/JIT/JITTest.cpp
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/JIT/Makefile
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/JIT/MultiJITTest.cpp
    llvm/branches/AMDILBackend/unittests/ExecutionEngine/Makefile
    llvm/branches/AMDILBackend/unittests/Support/AlignOfTest.cpp
    llvm/branches/AMDILBackend/unittests/Support/CMakeLists.txt
    llvm/branches/AMDILBackend/unittests/Support/Casting.cpp
    llvm/branches/AMDILBackend/unittests/Support/CommandLineTest.cpp
    llvm/branches/AMDILBackend/unittests/Support/DataExtractorTest.cpp
    llvm/branches/AMDILBackend/unittests/Support/Path.cpp
    llvm/branches/AMDILBackend/unittests/Transforms/Utils/CMakeLists.txt
    llvm/branches/AMDILBackend/unittests/VMCore/IRBuilderTest.cpp
    llvm/branches/AMDILBackend/unittests/VMCore/InstructionsTest.cpp
    llvm/branches/AMDILBackend/unittests/VMCore/PassManagerTest.cpp
    llvm/branches/AMDILBackend/utils/FileCheck/FileCheck.cpp
    llvm/branches/AMDILBackend/utils/TableGen/AsmMatcherEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/AsmWriterEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/AsmWriterInst.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CMakeLists.txt
    llvm/branches/AMDILBackend/utils/TableGen/CallingConvEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeEmitterGen.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenDAGPatterns.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenDAGPatterns.h
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenInstruction.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenInstruction.h
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenRegisters.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenRegisters.h
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenSchedule.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenSchedule.h
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenTarget.cpp
    llvm/branches/AMDILBackend/utils/TableGen/CodeGenTarget.h
    llvm/branches/AMDILBackend/utils/TableGen/DAGISelMatcher.h
    llvm/branches/AMDILBackend/utils/TableGen/DAGISelMatcherEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/DAGISelMatcherGen.cpp
    llvm/branches/AMDILBackend/utils/TableGen/DFAPacketizerEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/DisassemblerEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/EDEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/FastISelEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/FixedLenDecoderEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/InstrInfoEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/IntrinsicEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/Makefile
    llvm/branches/AMDILBackend/utils/TableGen/PseudoLoweringEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/RegisterInfoEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/SequenceToOffsetTable.h
    llvm/branches/AMDILBackend/utils/TableGen/SetTheory.cpp
    llvm/branches/AMDILBackend/utils/TableGen/SetTheory.h
    llvm/branches/AMDILBackend/utils/TableGen/SubtargetEmitter.cpp
    llvm/branches/AMDILBackend/utils/TableGen/TGValueTypes.cpp
    llvm/branches/AMDILBackend/utils/TableGen/TableGen.cpp
    llvm/branches/AMDILBackend/utils/TableGen/TableGenBackends.h
    llvm/branches/AMDILBackend/utils/TableGen/X86DisassemblerTables.cpp
    llvm/branches/AMDILBackend/utils/TableGen/X86ModRMFilters.h
    llvm/branches/AMDILBackend/utils/TableGen/X86RecognizableInstr.cpp
    llvm/branches/AMDILBackend/utils/TableGen/X86RecognizableInstr.h
    llvm/branches/AMDILBackend/utils/lit/lit/ExampleTests/LLVM.InTree/test/lit.cfg
    llvm/branches/AMDILBackend/utils/lit/lit/ExampleTests/LLVM.OutOfTree/src/test/lit.cfg
    llvm/branches/AMDILBackend/utils/lit/lit/ExampleTests/lit.cfg
    llvm/branches/AMDILBackend/utils/lit/lit/LitConfig.py
    llvm/branches/AMDILBackend/utils/lit/lit/TestRunner.py
    llvm/branches/AMDILBackend/utils/lit/lit/TestingConfig.py
    llvm/branches/AMDILBackend/utils/lit/lit/Util.py
    llvm/branches/AMDILBackend/utils/lit/lit/main.py
    llvm/branches/AMDILBackend/utils/lldbDataFormatters.py
    llvm/branches/AMDILBackend/utils/llvm-lit/llvm-lit.in
    llvm/branches/AMDILBackend/utils/llvm.grm
    llvm/branches/AMDILBackend/utils/unittest/googletest/gtest-port.cc
    llvm/branches/AMDILBackend/utils/unittest/googletest/include/gtest/internal/gtest-port.h
    llvm/branches/AMDILBackend/utils/vim/llvm.vim
    llvm/branches/AMDILBackend/utils/yaml2obj/yaml2obj.cpp

Propchange: llvm/branches/AMDILBackend/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 15 11:16:16 2013
@@ -1,3 +1,4 @@
 /llvm/branches/Apple/Pertwee:110850,110961
+/llvm/branches/release_32:167702-172535
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,161674
+/llvm/trunk:161674-167701,167718-167719,167731,167737,167743,167750,167784,167811,167817,167855,167860-167864,167875,167912,167942,167948,167966,168001,168035,168181,168186,168189,168196-168198,168227,168280,168291,168316,168319-168320,168346,168352,168354,168361,168364,168448,168450,168453,168455-168456,168458,168460,168471,168512,168622,168711,168765,168799,168837,168921,169084,169174,169177-169178,169183,169280,169719

Modified: llvm/branches/AMDILBackend/.gitignore
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/.gitignore?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/.gitignore (original)
+++ llvm/branches/AMDILBackend/.gitignore Tue Jan 15 11:16:16 2013
@@ -17,6 +17,7 @@
 *.pyc
 # vim swap files
 .*.swp
+.sw?
 
 #==============================================================================#
 # Explicit files to ignore (only matches one).
@@ -27,6 +28,7 @@
 cscope.out
 autoconf/aclocal.m4
 autoconf/autom4te.cache
+compile_commands.json
 
 #==============================================================================#
 # Directories to ignore (do not add trailing '/'s, they skip symlinks).

Modified: llvm/branches/AMDILBackend/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/CMakeLists.txt?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/CMakeLists.txt (original)
+++ llvm/branches/AMDILBackend/CMakeLists.txt Tue Jan 15 11:16:16 2013
@@ -116,6 +116,11 @@
   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")
@@ -129,10 +134,15 @@
   set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )
 endif()
 
+set(LLVM_TARGETS_TO_BUILD
+   ${LLVM_TARGETS_TO_BUILD}
+   ${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD})
+
 set(LLVM_ENUM_TARGETS "")
 foreach(c ${LLVM_TARGETS_TO_BUILD})
   list(FIND LLVM_ALL_TARGETS ${c} idx)
-  if( idx LESS 0 )
+  list(FIND LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ${c} idy)
+  if( idx LESS 0 AND idy LESS 0 )
     message(FATAL_ERROR "The target `${c}' does not exist.
     It should be one of\n${LLVM_ALL_TARGETS}")
   else()
@@ -140,11 +150,6 @@
   endif()
 endforeach(c)
 
-set(LLVM_TARGETS_TO_BUILD
-  ${LLVM_TARGETS_TO_BUILD}
-  ${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}
-  )
-
 set(llvm_builded_incs_dir ${LLVM_BINARY_DIR}/include/llvm)
 
 include(AddLLVMDefinitions)
@@ -173,23 +178,7 @@
 
 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()
@@ -250,6 +239,14 @@
 # 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,

Modified: llvm/branches/AMDILBackend/CREDITS.TXT
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/CREDITS.TXT?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/CREDITS.TXT (original)
+++ llvm/branches/AMDILBackend/CREDITS.TXT Tue Jan 15 11:16:16 2013
@@ -5,8 +5,8 @@
 
 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 @@
 N: Owen Anderson
 E: resistor at 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: GCC PCH Integration (llvm-gcc), llvm-gcc improvements
 D: Optimizer improvements, Loop Index Split
 
-N: Sandeep Patel
-E: deeppatel1987 at gmail.com
-D: ARM calling conventions rewrite, hard float support
-
 N: Wesley Peck
 E: peckw at wesleypeck.com
 W: http://wesleypeck.com/
@@ -354,6 +350,11 @@
 E: xerxes at zafena.se
 D: Cmake dependency chain and various bug fixes
 
+N: Alex Rosenberg
+E: alexr at leftfield.org
+I: arosenberg
+D: ARM calling conventions rewrite, hard float support
+
 N: Chad Rosier
 E: mcrosier at apple.com
 D: ARM fast-isel improvements
@@ -369,6 +370,7 @@
 
 N: Duncan Sands
 E: baldrick at free.fr
+I: baldrick
 D: Ada support in llvm-gcc
 D: Dragonegg plugin
 D: Exception handling improvements

Modified: llvm/branches/AMDILBackend/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/Makefile?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/Makefile (original)
+++ llvm/branches/AMDILBackend/Makefile Tue Jan 15 11:16:16 2013
@@ -68,7 +68,8 @@
 
 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 @@
 	  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) \
@@ -244,13 +248,13 @@
 SVN = svn
 SVN-UPDATE-OPTIONS =
 AWK = awk
-SUB-SVN-DIRS = $(AWK) '/\?\ \ \ \ \ \ / {print $$2}'   \
+SUB-SVN-DIRS = $(AWK) '/I|\?      / {print $$2}'   \
 		| LC_ALL=C xargs $(SVN) info 2>/dev/null \
 		| $(AWK) '/^Path:\ / {print $$2}'
 
 update:
 	$(SVN) $(SVN-UPDATE-OPTIONS) update $(LLVM_SRC_ROOT)
-	@ $(SVN) status $(LLVM_SRC_ROOT) | $(SUB-SVN-DIRS) | xargs $(SVN) $(SVN-UPDATE-OPTIONS) update
+	@ $(SVN) status --no-ignore $(LLVM_SRC_ROOT) | $(SUB-SVN-DIRS) | xargs $(SVN) $(SVN-UPDATE-OPTIONS) update
 
 happiness: update all check-all
 

Modified: llvm/branches/AMDILBackend/Makefile.config.in
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/Makefile.config.in?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/Makefile.config.in (original)
+++ llvm/branches/AMDILBackend/Makefile.config.in Tue Jan 15 11:16:16 2013
@@ -61,6 +61,7 @@
 
 prefix          := @prefix@
 PROJ_prefix     := $(prefix)
+program_prefix  := @program_prefix@
 PROJ_VERSION    := $(LLVMVersion)
 else
 ifndef PROJ_SRC_ROOT
@@ -258,6 +259,11 @@
 #DEBUG_SYMBOLS = 1
 @DEBUG_SYMBOLS@
 
+# When KEEP_SYMBOLS is enabled, installed executables will never have their
+# symbols stripped.
+#KEEP_SYMBOLS = 1
+ at KEEP_SYMBOLS@
+
 # The compiler flags to use for optimized builds.
 OPTIMIZE_OPTION := @OPTIMIZE_OPTION@
 

Modified: llvm/branches/AMDILBackend/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/Makefile.rules?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/Makefile.rules (original)
+++ llvm/branches/AMDILBackend/Makefile.rules Tue Jan 15 11:16:16 2013
@@ -571,7 +571,11 @@
 #--------------------------------------------------------------------
 
 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 @@
 
 # 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, at executable_path/../lib
-endif
+  ifneq ($(DARWIN_MAJVERS),4)
+    LD.Flags += $(RPATH) -Wl, at 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 @@
 $(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 @@
 else
 ToolBinDir = $(DESTDIR)$(PROJ_bindir)
 endif
-DestTool = $(ToolBinDir)/$(TOOLEXENAME)
+DestTool = $(ToolBinDir)/$(program_prefix)$(TOOLEXENAME)
 
 install-local:: $(DestTool)
 
@@ -1556,14 +1564,14 @@
 
 # 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)

Modified: llvm/branches/AMDILBackend/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/autoconf/configure.ac?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/autoconf/configure.ac (original)
+++ llvm/branches/AMDILBackend/autoconf/configure.ac Tue Jan 15 11:16:16 2013
@@ -363,8 +363,8 @@
   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 @@
   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" ;;
@@ -542,6 +542,15 @@
   AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
 fi
 
+dnl --enable-keep-symbols : do not strip installed executables
+AC_ARG_ENABLE(keep-symbols,
+   AS_HELP_STRING(--enable-keep-symbols,[Do not strip installed executables)]),,enableval=no)
+if test ${enableval} = "no" ; then
+  AC_SUBST(KEEP_SYMBOLS,[[]])
+else
+  AC_SUBST(KEEP_SYMBOLS,[[KEEP_SYMBOLS=1]])
+fi
+
 dnl --enable-jit: check whether they want to enable the jit
 AC_ARG_ENABLE(jit,
   AS_HELP_STRING(--enable-jit,
@@ -669,6 +678,21 @@
 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],
@@ -690,6 +714,8 @@
         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" ;;
@@ -1266,46 +1292,23 @@
 
 dnl Enable support for Intel JIT Events API.
 AC_ARG_WITH(intel-jitevents,
-  AS_HELP_STRING([--with-intel-jitevents=<vtune-amplifier-dir>],
-    [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;;
+        x86|x86_64) ;;
+        *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);;
       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 ;;
-        *) ;;
-      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])
@@ -1708,6 +1711,11 @@
 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)

Modified: llvm/branches/AMDILBackend/bindings/ocaml/executionengine/executionengine_ocaml.c
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/executionengine/executionengine_ocaml.c?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/executionengine/executionengine_ocaml.c (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/executionengine/executionengine_ocaml.c Tue Jan 15 11:16:16 2013
@@ -75,6 +75,9 @@
   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) {

Modified: llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.ml?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.ml (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.ml Tue Jan 15 11:16:16 2013
@@ -83,7 +83,7 @@
   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.

Modified: llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.mli
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.mli?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.mli (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/executionengine/llvm_executionengine.mli Tue Jan 15 11:16:16 2013
@@ -155,7 +155,7 @@
 
   (** [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
 

Modified: llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm.mli
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm.mli?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm.mli (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm.mli Tue Jan 15 11:16:16 2013
@@ -375,7 +375,7 @@
 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
 

Modified: llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm_ocaml.c
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm_ocaml.c?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm_ocaml.c (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/llvm/llvm_ocaml.c Tue Jan 15 11:16:16 2013
@@ -1277,6 +1277,9 @@
   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) {

Modified: llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.ml?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.ml (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.ml Tue Jan 15 11:16:16 2013
@@ -13,7 +13,7 @@
   | Little
 end
 
-module TargetData = struct
+module DataLayout = struct
   type t
 
   external create : string -> t = "llvm_targetdata_create"
@@ -23,20 +23,20 @@
   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"

Modified: llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.mli
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.mli?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.mli (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/target/llvm_target.mli Tue Jan 15 11:16:16 2013
@@ -18,11 +18,11 @@
   | 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 @@
                = "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"

Modified: llvm/branches/AMDILBackend/bindings/ocaml/target/target_ocaml.c
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/bindings/ocaml/target/target_ocaml.c?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/bindings/ocaml/target/target_ocaml.c (original)
+++ llvm/branches/AMDILBackend/bindings/ocaml/target/target_ocaml.c Tue Jan 15 11:16:16 2013
@@ -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 -> [<Llvm.PassManager.any] Llvm.PassManager.t -> unit */
+/* DataLayout.t -> [<Llvm.PassManager.any] Llvm.PassManager.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 @@
   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)));

Modified: llvm/branches/AMDILBackend/cmake/config-ix.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/cmake/config-ix.cmake?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/cmake/config-ix.cmake (original)
+++ llvm/branches/AMDILBackend/cmake/config-ix.cmake Tue Jan 15 11:16:16 2013
@@ -85,13 +85,25 @@
 # 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(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 @@
 
 # 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 @@
   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 ()

Modified: llvm/branches/AMDILBackend/cmake/modules/AddLLVM.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/cmake/modules/AddLLVM.cmake?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/cmake/modules/AddLLVM.cmake (original)
+++ llvm/branches/AMDILBackend/cmake/modules/AddLLVM.cmake Tue Jan 15 11:16:16 2013
@@ -135,16 +135,22 @@
 # 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 @@
 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}

Modified: llvm/branches/AMDILBackend/cmake/modules/LLVMProcessSources.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/cmake/modules/LLVMProcessSources.cmake?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/cmake/modules/LLVMProcessSources.cmake (original)
+++ llvm/branches/AMDILBackend/cmake/modules/LLVMProcessSources.cmake Tue Jan 15 11:16:16 2013
@@ -48,7 +48,7 @@
     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)

Modified: llvm/branches/AMDILBackend/configure
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/configure?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/configure (original)
+++ llvm/branches/AMDILBackend/configure Tue Jan 15 11:16:16 2013
@@ -693,6 +693,7 @@
 EXPENSIVE_CHECKS
 DEBUG_RUNTIME
 DEBUG_SYMBOLS
+KEEP_SYMBOLS
 JIT
 TARGET_HAS_JIT
 ENABLE_DOCS
@@ -703,6 +704,7 @@
 ENABLE_SHARED
 ENABLE_EMBED_STDCXX
 ENABLE_TIMESTAMPS
+ENABLE_BACKTRACES
 TARGETS_TO_BUILD
 LLVM_ENUM_TARGETS
 LLVM_ENUM_ASM_PRINTERS
@@ -765,8 +767,6 @@
 USE_UDIS86
 USE_OPROFILE
 USE_INTEL_JITEVENTS
-INTEL_JITEVENTS_INCDIR
-INTEL_JITEVENTS_LIBDIR
 XML2CONFIG
 LIBXML2_LIBS
 LIBXML2_INC
@@ -791,6 +791,7 @@
 ENABLE_VISIBILITY_INLINES_HIDDEN
 RPATH
 RDYNAMIC
+program_prefix
 LIBOBJS
 LTLIBOBJS'
 ac_subst_files=''
@@ -1408,6 +1409,7 @@
                           NO)
   --enable-debug-symbols  Build compiler with debug symbols (default is NO if
                           optimization is on and YES if it's off)
+  --enable-keep-symbols   Do not strip installed executables)
   --enable-jit            Enable Just In Time Compiling (default is YES)
   --enable-docs           Build documents (default is YES)
   --enable-doxygen        Build doxygen documentation (default is NO)
@@ -1421,6 +1423,8 @@
                           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,
@@ -1458,10 +1462,8 @@
   --with-udis86=<path>    Use udis86 external x86 disassembler library
   --with-oprofile=<prefix>
                           Tell OProfile >= 0.9.4 how to symbolize JIT output
-  --with-intel-jitevents=<vtune-amplifier-dir>
-                          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
@@ -3902,8 +3904,8 @@
   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" ;;
@@ -3936,8 +3938,8 @@
   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" ;;
@@ -5159,6 +5161,21 @@
 
 fi
 
+# Check whether --enable-keep-symbols was given.
+if test "${enable_keep_symbols+set}" = set; then
+  enableval=$enable_keep_symbols;
+else
+  enableval=no
+fi
+
+if test ${enableval} = "no" ; then
+  KEEP_SYMBOLS=
+
+else
+  KEEP_SYMBOLS=KEEP_SYMBOLS=1
+
+fi
+
 # Check whether --enable-jit was given.
 if test "${enable_jit+set}" = set; then
   enableval=$enable_jit;
@@ -5368,6 +5385,31 @@
 _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
@@ -5390,6 +5432,8 @@
         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" ;;
@@ -10277,7 +10321,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10275 "configure"
+#line 10317 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13537,308 +13581,30 @@
 # Check whether --with-intel-jitevents was given.
 if test "${with_intel_jitevents+set}" = set; then
   withval=$with_intel_jitevents;
+       case "$withval" in
+          yes) USE_INTEL_JITEVENTS=1
+;;
+          no)  USE_INTEL_JITEVENTS=0
+;;
+          *) { { echo "$as_me:$LINENO: error: Invalid setting for --with-intel-jitevents. Use \"yes\" or \"no\"" >&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 <jitprofiling.h>
-_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 <jitprofiling.h>
-_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
@@ -21370,6 +21136,10 @@
 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"
@@ -22155,12 +21925,12 @@
 EXPENSIVE_CHECKS!$EXPENSIVE_CHECKS$ac_delim
 DEBUG_RUNTIME!$DEBUG_RUNTIME$ac_delim
 DEBUG_SYMBOLS!$DEBUG_SYMBOLS$ac_delim
+KEEP_SYMBOLS!$KEEP_SYMBOLS$ac_delim
 JIT!$JIT$ac_delim
 TARGET_HAS_JIT!$TARGET_HAS_JIT$ac_delim
 ENABLE_DOCS!$ENABLE_DOCS$ac_delim
 ENABLE_DOXYGEN!$ENABLE_DOXYGEN$ac_delim
 LLVM_ENABLE_THREADS!$LLVM_ENABLE_THREADS$ac_delim
-ENABLE_PTHREADS!$ENABLE_PTHREADS$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -22202,10 +21972,12 @@
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+ENABLE_PTHREADS!$ENABLE_PTHREADS$ac_delim
 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
@@ -22268,8 +22040,6 @@
 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
@@ -22294,11 +22064,12 @@
 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
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 94; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 95; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

Modified: llvm/branches/AMDILBackend/docs/AliasAnalysis.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/AliasAnalysis.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/AliasAnalysis.rst (original)
+++ llvm/branches/AMDILBackend/docs/AliasAnalysis.rst Tue Jan 15 11:16:16 2013
@@ -230,7 +230,7 @@
 
 .. code-block:: c++
 
-  void getAnalysisUsage(AnalysisUsage &AU) const {
+  void getAnalysisUsage(AnalysisUsage &AU) const {
     AliasAnalysis::getAnalysisUsage(AU);
     // declare your dependencies here.
   }

Modified: llvm/branches/AMDILBackend/docs/BitCodeFormat.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/BitCodeFormat.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/BitCodeFormat.rst (original)
+++ llvm/branches/AMDILBackend/docs/BitCodeFormat.rst Tue Jan 15 11:16:16 2013
@@ -489,6 +489,8 @@
 When combined with the bitcode magic number and viewed as bytes, this is
 ``"BC 0xC0DE"``.
 
+.. _Signed VBRs:
+
 Signed VBRs
 ^^^^^^^^^^^
 
@@ -507,6 +509,7 @@
 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 @@
 * `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
 ^^^^^^^^^^^^^^^^^^^^^^^^^

Modified: llvm/branches/AMDILBackend/docs/CMake.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/CMake.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/CMake.rst (original)
+++ llvm/branches/AMDILBackend/docs/CMake.rst Tue Jan 15 11:16:16 2013
@@ -273,11 +273,6 @@
 **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
 ========================
 

Modified: llvm/branches/AMDILBackend/docs/CodeGenerator.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/CodeGenerator.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/CodeGenerator.rst (original)
+++ llvm/branches/AMDILBackend/docs/CodeGenerator.rst Tue Jan 15 11:16:16 2013
@@ -81,7 +81,7 @@
 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:`<tt>`
-`TargetMachine`_ :raw-html:`</tt>` and :raw-html:`<tt>` `TargetData`_
+`TargetMachine`_ :raw-html:`</tt>` and :raw-html:`<tt>` `DataLayout`_
 :raw-html:`</tt>`) 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 @@
 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:`<tt>` `TargetData`_
+All of the target description classes (except the :raw-html:`<tt>` `DataLayout`_
 :raw-html:`</tt>` class) are designed to be subclassed by the concrete target
 implementation, and have virtual methods implemented.  To get to these
 implementations, the :raw-html:`<tt>` `TargetMachine`_ :raw-html:`</tt>` class
@@ -214,18 +214,18 @@
 ``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:`<tt>` `TargetData`_ :raw-html:`</tt>` class, but if the code
+:raw-html:`<tt>` `DataLayout`_ :raw-html:`</tt>` 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 @@
 * 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 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 @@
   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 @@
   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 @@
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 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

Modified: llvm/branches/AMDILBackend/docs/CodingStandards.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/CodingStandards.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/CodingStandards.rst (original)
+++ llvm/branches/AMDILBackend/docs/CodingStandards.rst Tue Jan 15 11:16:16 2013
@@ -79,10 +79,11 @@
   // 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 @@
 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 @@
 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<int> &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 @@
 
 .. code-block:: c++
 
-  Value *DoSomething(Instruction *I) {
+  Value *doSomething(Instruction *I) {
     if (!isa<TerminatorInst>(I) &&
-        I->hasOneUse() && SomeOtherThing(I)) {
+        I->hasOneUse() && doOtherThing(I)) {
       ... some long code ....
     }
 
@@ -445,7 +574,7 @@
 
 .. code-block:: c++
 
-  Value *DoSomething(Instruction *I) {
+  Value *doSomething(Instruction *I) {
     // Terminators never need 'something' done to them because ... 
     if (isa<TerminatorInst>(I))
       return 0;
@@ -456,7 +585,7 @@
       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-block:: c++
 
-  /// ListContainsFoo - Return true if the specified list has an element that is
-  /// a foo.
-  static bool ListContainsFoo(const std::vector<Bar*> &List) {
+  /// \returns true if the specified list has an element that is a foo.
+  static bool containsFoo(const std::vector<Bar*> &List) {
     for (unsigned i = 0, e = List.size(); i != e; ++i)
       if (List[i]->isFoo())
         return true;
@@ -611,7 +739,7 @@
   }
   ...
 
-  if (ListContainsFoo(BarList)) {
+  if (containsFoo(BarList)) {
     ...
   }
 
@@ -714,7 +842,7 @@
 .. 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 @@
 
 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 @@
 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 @@
 
   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 @@
   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 @@
     };
   } // end anonymous namespace
 
-  static void Helper() { 
+  static void runHelper() { 
     ... 
   }
 
@@ -1112,7 +1291,7 @@
     bool operator<(const char *RHS) const;
   };
 
-  void Helper() { 
+  void runHelper() { 
     ... 
   }
 
@@ -1122,7 +1301,7 @@
 
   } // 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

Modified: llvm/branches/AMDILBackend/docs/CommandGuide/FileCheck.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/CommandGuide/FileCheck.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/CommandGuide/FileCheck.rst (original)
+++ llvm/branches/AMDILBackend/docs/CommandGuide/FileCheck.rst Tue Jan 15 11:16:16 2013
@@ -45,6 +45,11 @@
 
 
 
+**--input-file** *filename*
+
+  File to check (defaults to stdin).
+
+
 **--strict-whitespace**
 
  By default, FileCheck canonicalizes input horizontal whitespace (spaces and
@@ -271,8 +276,9 @@
 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

Modified: llvm/branches/AMDILBackend/docs/CommandGuide/lit.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/CommandGuide/lit.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/CommandGuide/lit.rst (original)
+++ llvm/branches/AMDILBackend/docs/CommandGuide/lit.rst Tue Jan 15 11:16:16 2013
@@ -125,6 +125,10 @@
  *--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 @@
 
 
 
+**--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

Removed: llvm/branches/AMDILBackend/docs/CompilerWriterInfo.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/CompilerWriterInfo.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/CompilerWriterInfo.html (original)
+++ llvm/branches/AMDILBackend/docs/CompilerWriterInfo.html (removed)
@@ -1,267 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
-                      "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>Architecture/platform information for compiler writers</title>
-  <link rel="stylesheet" href="_static/llvm.css" type="text/css">
-</head>
-
-<body>
-
-<h1>
-  Architecture/platform information for compiler writers
-</h1>
-
-<div class="doc_warning">
-  <p>Note: This document is a work-in-progress.  Additions and clarifications
-  are welcome.</p>
-</div>
-
-<ol>
-  <li><a href="#hw">Hardware</a>
-  <ol>
-    <li><a href="#arm">ARM</a></li>
-    <li><a href="#ia64">Itanium</a></li>
-    <li><a href="#mips">MIPS</a></li>
-    <li><a href="#ppc">PowerPC</a></li>
-    <li><a href="#sparc">SPARC</a></li>
-    <li><a href="#x86">X86</a></li>
-    <li><a href="#other">Other lists</a></li>
-  </ol></li>
-  <li><a href="#abi">Application Binary Interface (ABI)</a>
-  <ol>
-    <li><a href="#linux">Linux</a></li>
-    <li><a href="#osx">OS X</a></li>
-  </ol></li>
-  <li><a href="#misc">Miscellaneous resources</a></li>
-</ol>
-
-<div class="doc_author">
-  <p>Compiled by <a href="http://misha.brukman.net">Misha Brukman</a></p>
-</div>
-
-<!-- *********************************************************************** -->
-<h2><a name="hw">Hardware</a></h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<!-- ======================================================================= -->
-<h3><a name="arm">ARM</a></h3>
-
-<div>
-<ul>
-<li><a href="http://www.arm.com/documentation/">ARM documentation</a> 
-(<a href="http://www.arm.com/documentation/ARMProcessor_Cores/">Processor
-Cores</a>)</li>
-<li><a href="http://www.arm.com/products/DevTools/ABI.html">ABI</a></li>
-</ul>
-</div>
-
-<!-- ======================================================================= -->
-<h3><a name="ia64">Itanium (ia64)</a></h3>
-
-<div>
-<ul>
-<li><a
-href="http://developer.intel.com/design/itanium2/documentation.htm">Itanium documentation</a> 
-</li>
-</ul>
-</div>
-
-<!-- ======================================================================= -->
-<h3><a name="mips">MIPS</a></h3>
-
-<div>
-<ul>
-<li><a
-href="http://mips.com/content/Documentation/MIPSDocumentation/ProcessorArchitecture/doclibrary">MIPS
-Processor Architecture</a></li>
-</ul>
-</div>
-
-<!-- ======================================================================= -->
-<h3><a name="ppc">PowerPC</a></h3>
-
-<div>
-
-<!-- _______________________________________________________________________ -->
-<h4>IBM - Official manuals and docs</h4>
-
-<div>
-
-<ul>
-<li><a
-href="http://www-106.ibm.com/developerworks/eserver/articles/archguide.html">PowerPC
-Architecture Book</a>
-<ul>
-  <li>Book I: <a
-  href="http://www-106.ibm.com/developerworks/eserver/pdfs/archpub1.pdf">PowerPC
-  User Instruction Set Architecture</a></li>
-  <li>Book II: <a
-  href="http://www-106.ibm.com/developerworks/eserver/pdfs/archpub2.pdf">PowerPC
-  Virtual Environment Architecture</a></li>
-  <li>Book III: <a
-  href="http://www-106.ibm.com/developerworks/eserver/pdfs/archpub3.pdf">PowerPC
-  Operating Environment Architecture</a></li>
-</ul></li>
-<li><a
-href="http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF7785256996007558C6">PowerPC
-Compiler Writer's Guide</a></li>
-<li><A
-href="http://www-3.ibm.com/chips/techlib/techlib.nsf/products/PowerPC">PowerPC
-Processor Manuals</a></li>
-<li><a
-href="http://www-106.ibm.com/developerworks/linux/library/l-powarch/">Intro to
-PowerPC architecture</a></li>
-<li><a href="http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixassem/alangref/alangreftfrm.htm">IBM AIX/5L for POWER Assembly reference</a></li>
-</ul>
-
-</div>
-
-<!-- _______________________________________________________________________ -->
-<h4>Other documents, collections, notes</h4>
-
-<div>
-
-<ul>
-<li><a href="http://penguinppc.org/dev/#library">PowerPC ABI documents</a></li>
-<li><a href="http://gcc.gnu.org/ml/gcc-patches/2003-09/msg00997.html">PowerPC64
-alignment of long doubles (from GCC)</a></li>
-<li><a href="http://sources.redhat.com/ml/binutils/2002-04/msg00573.html">Long
-branch stubs for powerpc64-linux (from binutils)</a></li>
-</ul>
-
-</div>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3><a name="sparc">SPARC</a></h3>
-
-<div>
-
-<ul>
-<li><a href="http://www.sparc.org/resource.htm">SPARC resources</a></li>
-<li><a href="http://www.sparc.org/standards.html">SPARC standards</a></li>
-</ul>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3><a name="x86">X86</a></h3>
-
-<div>
-
-<!-- _______________________________________________________________________ -->
-<h4>AMD - Official manuals and docs</h4>
-
-<div>
-<ul>
-<li><a
-href="http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739,00.html">AMD processor manuals</a></li>
-<li><a href="http://www.x86-64.org/documentation">X86-64 ABI</a></li>
-</ul>
-</div>
-
-<!-- _______________________________________________________________________ -->
-<h4>Intel - Official manuals and docs</h4>
-
-<div>
-<ul>
-<li><a
-href="http://developer.intel.com/design/pentium4/manuals/index_new.htm">IA-32
-manuals</a></li>
-<li><a
-href="http://www.intel.com/design/itanium/documentation.htm?iid=ipp_srvr_proc_itanium2+techdocs">Intel
-Itanium documentation</a></li>
-</ul>
-</div>
-
-<!-- _______________________________________________________________________ -->
-<h4>Other x86-specific information</h4>
-
-<div>
-<ul>
-<li><a href="http://www.agner.org/assem/calling_conventions.pdf">Calling
-conventions for different C++ compilers and operating systems</a></li>
-</ul>
-</div>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3><a name="other">Other relevant lists</a></h3>
-
-<div>
-
-<ul>
-<li><a href="http://gcc.gnu.org/readings.html">GCC reading list</a></li>
-</ul>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2><a name="abi">ABI</a></h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<!-- ======================================================================= -->
-<h3><a name="linux">Linux</a></h3>
-
-<div>
-<ol>
-<li><a href="http://www.linuxbase.org/spec/ELF/ppc64/">PowerPC 64-bit ELF ABI
-Supplement</a></li>
-</ol>
-</div>
-
-<!-- ======================================================================= -->
-<h3><a name="osx">OS X</a></h3>
-
-<div>
-<ol>
-<li><a
-href="http://developer.apple.com/documentation/Darwin/RuntimeArchitecture-date.html">Mach-O
-Runtime Architecture</a></li>
-<li><a href="http://www.unsanity.org/archives/000044.php">Notes on Mach-O
-ABI</a></li>
-</ol>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2><a name="misc">Miscellaneous resources</a></h2>
-<!-- *********************************************************************** -->
-
-<ul>
-<li><a
-href="http://www.nondot.org/sabre/os/articles/ExecutableFileFormats/">Executable
-File Format library</a></li>
-<li><a href="http://gcc.gnu.org/projects/prefetch.html">GCC prefetch project</a>
-page has a good survey of the prefetching capabilities of a variety of modern
-processors.</li>
-</ul>
-
-<!-- *********************************************************************** -->
-
-<hr>
-<address>
-  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
-  <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
-
-  <a href="http://misha.brukman.net">Misha Brukman</a><br>
-  <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date$
-</address>
-
-</body>
-</html>

Removed: llvm/branches/AMDILBackend/docs/DebuggingJITedCode.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/DebuggingJITedCode.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/DebuggingJITedCode.html (original)
+++ llvm/branches/AMDILBackend/docs/DebuggingJITedCode.html (removed)
@@ -1,184 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-                      "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>Debugging JITed Code With GDB</title>
-  <link rel="stylesheet" href="_static/llvm.css" type="text/css">
-</head>
-<body>
-
-<h1>Debugging JIT-ed Code With GDB</h1>
-<ol>
-  <li><a href="#background">Background</a></li>
-  <li><a href="#gdbversion">GDB Version</a></li>
-  <li><a href="#mcjitdebug">Debugging MCJIT-ed code</a></li>
-  <ul>
-    <li><a href="#mcjitdebug_example">Example</a></li>
-  </ul>
-</ol>
-<div class="doc_author">Written by Reid Kleckner and Eli Bendersky</div>
-
-<!--=========================================================================-->
-<h2><a name="background">Background</a></h2>
-<!--=========================================================================-->
-<div>
-
-<p>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.
-</p>
-
-<p>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
-(<tt>__jit_debug_register_code</tt>) 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.
-</p>
-</div>
-
-<!--=========================================================================-->
-<h2><a name="gdbversion">GDB Version</a></h2>
-<!--=========================================================================-->
-
-<p>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.
-</p>
-
-
-<!--=========================================================================-->
-<h2><a name="mcjitdebug">Debugging MCJIT-ed code</a></h2>
-<!--=========================================================================-->
-<div>
-
-<p>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.</p>
-
-<p>Note that lli has to be passed the <tt>-use-mcjit</tt> flag to JIT the code
-with MCJIT instead of the old JIT.</p>
-
-<h3><a name="mcjitdebug_example">Example</a></h3>
-
-<div>
-
-<p>Consider the following C code (with line numbers added to make the example
-easier to follow):</p>
-
-<pre class="doc_code">
-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  }
-</pre>
-
-<p>Here is a sample command line session that shows how to build and run this
-code via lli inside GDB:
-</p>
-
-<pre class="doc_code">
-$ $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) 
-
-</pre>
-
-</div>
-</div>
-
-
-<!-- *********************************************************************** -->
-<hr>
-<address>
-  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
-  <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
-  <a href="mailto:reid.kleckner at gmail.com">Reid Kleckner</a>,
-  <a href="mailto:eliben at gmail.com">Eli Bendersky</a><br>
-  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date$
-</address>
-</body>
-</html>

Modified: llvm/branches/AMDILBackend/docs/DeveloperPolicy.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/DeveloperPolicy.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/DeveloperPolicy.rst (original)
+++ llvm/branches/AMDILBackend/docs/DeveloperPolicy.rst Tue Jan 15 11:16:16 2013
@@ -137,6 +137,9 @@
 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 @@
 #. You are granted *commit-after-approval* to all parts of LLVM.  To get
    approval, submit a `patch`_ to `llvm-commits
    <http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>`_. When approved
-   you may commit it yourself.</li>
+   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

Removed: llvm/branches/AMDILBackend/docs/ExtendingLLVM.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/ExtendingLLVM.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/ExtendingLLVM.html (original)
+++ llvm/branches/AMDILBackend/docs/ExtendingLLVM.html (removed)
@@ -1,379 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-                      "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>Extending LLVM: Adding instructions, intrinsics, types, etc.</title>
-  <link rel="stylesheet" href="_static/llvm.css" type="text/css">
-</head>
-
-<body>
-
-<h1>
-  Extending LLVM: Adding instructions, intrinsics, types, etc.
-</h1>
-
-<ol>
-  <li><a href="#introduction">Introduction and Warning</a></li>
-  <li><a href="#intrinsic">Adding a new intrinsic function</a></li>
-  <li><a href="#instruction">Adding a new instruction</a></li>
-  <li><a href="#sdnode">Adding a new SelectionDAG node</a></li>
-  <li><a href="#type">Adding a new type</a>
-  <ol>
-    <li><a href="#fund_type">Adding a new fundamental type</a></li>
-    <li><a href="#derived_type">Adding a new derived type</a></li>
-  </ol></li>
-</ol>
-
-<div class="doc_author">    
-  <p>Written by <a href="http://misha.brukman.net">Misha Brukman</a>,
-  Brad Jones, Nate Begeman,
-  and <a href="http://nondot.org/sabre">Chris Lattner</a></p>
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="introduction">Introduction and Warning</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>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.</p>
-
-<p>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 <a
-href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM-dev</a> 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
-<em>many</em> LLVM analyses and transformations, so it may be quite a bit of
-work.</p>
-
-<p>Adding an <a href="#intrinsic">intrinsic function</a> 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.</p>
-
-<p>Before you invest a significant amount of effort into a non-trivial
-extension, <span class="doc_warning">ask on the list</span> 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.</p>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="intrinsic">Adding a new intrinsic function</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>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.</p>
-
-<ol>
-<li><tt>llvm/docs/LangRef.html</tt>:
-    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.</li>
-
-<li><tt>llvm/include/llvm/Intrinsics*.td</tt>:
-    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 <tt>llvm_int_ty</tt> type for an argument will
-    be deemed by <tt>tblgen</tt> as overloaded and the corresponding suffix 
-    will be required on the intrinsic's name.</li>
-
-<li><tt>llvm/lib/Analysis/ConstantFolding.cpp</tt>: If it is possible to 
-    constant fold your intrinsic, add support to it in the 
-    <tt>canConstantFoldCallTo</tt> and <tt>ConstantFoldCall</tt> functions.</li>
-
-<li><tt>llvm/test/Regression/*</tt>: Add test cases for your test cases to the 
-    test suite</li>
-</ol>
-
-<p>Once the intrinsic has been added to the system, you must add code generator
-support for it.  Generally you must do the following steps:</p>
-
-<dl>
-
-<dt>Add support to the .td file for the target(s) of your choice in 
-   <tt>lib/Target/*/*.td</tt>.</dt>
-
-<dd>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.</dd>
-</dl>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="sdnode">Adding a new SelectionDAG node</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>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).</p>
-
-<ol>
-<li><tt>include/llvm/CodeGen/ISDOpcodes.h</tt>:
-    Add an enum value for the new SelectionDAG node.</li>
-<li><tt>lib/CodeGen/SelectionDAG/SelectionDAG.cpp</tt>:
-    Add code to print the node to <tt>getOperationName</tt>.  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 <tt>getNode</tt> 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.</li>
-<li><tt>lib/CodeGen/SelectionDAG/LegalizeDAG.cpp</tt>:
-    Add code to <a href="CodeGenerator.html#selectiondag_legalize">legalize, 
-    promote, and expand</a> the node as necessary.  At a minimum, you will need
-    to add a case statement for your node in <tt>LegalizeOp</tt> 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 <tt>LegalizeOp</tt> to Expand your node into simpler, legal
-    operations.  The case for <tt>ISD::UREM</tt> for expanding a remainder into
-    a divide, multiply, and a subtract is a good example.</li>
-<li><tt>lib/CodeGen/SelectionDAG/LegalizeDAG.cpp</tt>:
-    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 
-    <tt>LegalizeOp</tt> to Promote your node's operands to a larger size, and 
-    perform the correct operation.  You will also need to add code to 
-    <tt>PromoteOp</tt> to do this as well.  For a good example, see 
-    <tt>ISD::BSWAP</tt>,
-    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.</li>
-<li><tt>lib/CodeGen/SelectionDAG/LegalizeDAG.cpp</tt>:
-    Add a case for your node in <tt>ExpandOp</tt> 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.</li>
-<li><tt>lib/CodeGen/SelectionDAG/DAGCombiner.cpp</tt>:
-    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 <tt></tt>.  There are several good examples for simple combines you
-    can do; <tt>visitFABS</tt> and <tt>visitSRL</tt> are good starting places.
-    </li>
-<li><tt>lib/Target/PowerPC/PPCISelLowering.cpp</tt>:
-    Each target has an implementation of the <tt>TargetLowering</tt> 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 
-    <tt>LegalizeOp</tt> above to decompose your new node into other legal
-    nodes for this target.</li>
-<li><tt>lib/Target/TargetSelectionDAG.td</tt>:
-    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
-    <tt>add</tt>, <tt>bswap</tt>, and <tt>fadd</tt> for examples.</li>
-<li><tt>lib/Target/PowerPC/PPCInstrInfo.td</tt>:
-    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 <tt>rotl</tt> in 
-    <tt>PPCInstrInfo.td</tt>.</li>
-<li>TODO: document complex patterns.</li>
-<li><tt>llvm/test/Regression/CodeGen/*</tt>: Add test cases for your new node
-    to the test suite.  <tt>llvm/test/Regression/CodeGen/X86/bswap.ll</tt> is
-    a good example.</li>
-</ol>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="instruction">Adding a new instruction</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p><span class="doc_warning">WARNING: adding instructions changes the bitcode
-format, and it will take some effort to maintain compatibility with
-the previous version.</span> Only add an instruction if it is absolutely
-necessary.</p>
-
-<ol>
-
-<li><tt>llvm/include/llvm/Instruction.def</tt>:
-    add a number for your instruction and an enum name</li>
-
-<li><tt>llvm/include/llvm/Instructions.h</tt>:
-    add a definition for the class that will represent your instruction</li>
-
-<li><tt>llvm/include/llvm/Support/InstVisitor.h</tt>:
-    add a prototype for a visitor to your new instruction type</li>
-
-<li><tt>llvm/lib/AsmParser/Lexer.l</tt>:
-    add a new token to parse your instruction from assembly text file</li>
-
-<li><tt>llvm/lib/AsmParser/llvmAsmParser.y</tt>:
-    add the grammar on how your instruction can be read and what it will
-    construct as a result</li>
-
-<li><tt>llvm/lib/Bitcode/Reader/Reader.cpp</tt>:
-    add a case for your instruction and how it will be parsed from bitcode</li>
-
-<li><tt>llvm/lib/VMCore/Instruction.cpp</tt>:
-    add a case for how your instruction will be printed out to assembly</li>
-
-<li><tt>llvm/lib/VMCore/Instructions.cpp</tt>:
-    implement the class you defined in
-    <tt>llvm/include/llvm/Instructions.h</tt></li>
-
-<li>Test your instruction</li>
-
-<li><tt>llvm/lib/Target/*</tt>: 
-    Add support for your instruction to code generators, or add a lowering
-    pass.</li>
-
-<li><tt>llvm/test/Regression/*</tt>: add your test cases to the test suite.</li>
-
-</ol>
-
-<p>Also, you need to implement (or modify) any analyses or passes that you want
-to understand this new instruction.</p>
-
-</div>
-
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="type">Adding a new type</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p><span class="doc_warning">WARNING: adding new types changes the bitcode
-format, and will break compatibility with currently-existing LLVM
-installations.</span> Only add new types if it is absolutely necessary.</p>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="fund_type">Adding a fundamental type</a>
-</h3>
-
-<div>
-
-<ol>
-
-<li><tt>llvm/include/llvm/Type.h</tt>:
-    add enum for the new type; add static <tt>Type*</tt> for this type</li>
-
-<li><tt>llvm/lib/VMCore/Type.cpp</tt>:
-    add mapping from <tt>TypeID</tt> => <tt>Type*</tt>;
-    initialize the static <tt>Type*</tt></li>
-
-<li><tt>llvm/lib/AsmReader/Lexer.l</tt>:
-    add ability to parse in the type from text assembly</li>
-
-<li><tt>llvm/lib/AsmReader/llvmAsmParser.y</tt>:
-    add a token for that type</li>
-
-</ol>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="derived_type">Adding a derived type</a>
-</h3>
-
-<div>
-
-<ol>
-<li><tt>llvm/include/llvm/Type.h</tt>:
-    add enum for the new type; add a forward declaration of the type
-    also</li>
-
-<li><tt>llvm/include/llvm/DerivedTypes.h</tt>:
-    add new class to represent new class in the hierarchy; add forward 
-    declaration to the TypeMap value type</li>
-
-<li><tt>llvm/lib/VMCore/Type.cpp</tt>:
-    add support for derived type to: 
-<div class="doc_code">
-<pre>
-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)
-</pre>
-</div>
-    add necessary member functions for type, and factory methods</li>
-
-<li><tt>llvm/lib/AsmReader/Lexer.l</tt>:
-    add ability to parse in the type from text assembly</li>
-
-<li><tt>llvm/lib/BitCode/Writer/Writer.cpp</tt>:
-    modify <tt>void BitcodeWriter::outputType(const Type *T)</tt> to serialize
-    your type</li>
-
-<li><tt>llvm/lib/BitCode/Reader/Reader.cpp</tt>:
-    modify <tt>const Type *BitcodeReader::ParseType()</tt> to read your data
-    type</li> 
-
-<li><tt>llvm/lib/VMCore/AsmWriter.cpp</tt>:
-    modify
-<div class="doc_code">
-<pre>
-void calcTypeName(const Type *Ty,
-                  std::vector<const Type*> &TypeStack,
-                  std::map<const Type*,std::string> &TypeNames,
-                  std::string & Result)
-</pre>
-</div>
-    to output the new derived type
-</li>  
- 
-
-</ol>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-
-<hr>
-<address>
-  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
-  <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
-
-  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
-  <br>
-  Last modified: $Date$
-</address>
-
-</body>
-</html>

Modified: llvm/branches/AMDILBackend/docs/GarbageCollection.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/GarbageCollection.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/GarbageCollection.html (original)
+++ llvm/branches/AMDILBackend/docs/GarbageCollection.html Tue Jan 15 11:16:16 2013
@@ -1253,7 +1253,7 @@
 >#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 @@
   // 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 {

Removed: llvm/branches/AMDILBackend/docs/GettingStarted.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/GettingStarted.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/GettingStarted.html (original)
+++ llvm/branches/AMDILBackend/docs/GettingStarted.html (removed)
@@ -1,1760 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-                      "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>Getting Started with LLVM System</title>
-  <link rel="stylesheet" href="_static/llvm.css" type="text/css">
-</head>
-<body>
-
-<h1>
-  Getting Started with the LLVM System  
-</h1>
-
-<ul>
-  <li><a href="#overview">Overview</a>
-  <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
-  <li><a href="#requirements">Requirements</a>
-    <ol>
-      <li><a href="#hardware">Hardware</a></li>
-      <li><a href="#software">Software</a></li>
-      <li><a href="#brokengcc">Broken versions of GCC and other tools</a></li>
-    </ol></li>
-
-  <li><a href="#starting">Getting Started with LLVM</a>
-    <ol>
-      <li><a href="#terminology">Terminology and Notation</a></li>
-      <li><a href="#environment">Setting Up Your Environment</a></li>
-      <li><a href="#unpack">Unpacking the LLVM Archives</a></li>
-      <li><a href="#checkout">Checkout LLVM from Subversion</a></li>
-      <li><a href="#git_mirror">LLVM GIT mirror</a></li>
-      <li><a href="#config">Local LLVM Configuration</a></li>
-      <li><a href="#compile">Compiling the LLVM Suite Source Code</a></li>
-      <li><a href="#cross-compile">Cross-Compiling LLVM</a></li>
-      <li><a href="#objfiles">The Location of LLVM Object Files</a></li>
-      <li><a href="#optionalconfig">Optional Configuration Items</a></li>
-    </ol></li>
-
-  <li><a href="#layout">Program layout</a>
-    <ol>
-      <li><a href="#examples"><tt>llvm/examples</tt></a></li>
-      <li><a href="#include"><tt>llvm/include</tt></a></li>
-      <li><a href="#lib"><tt>llvm/lib</tt></a></li>
-      <li><a href="#projects"><tt>llvm/projects</tt></a></li>
-      <li><a href="#runtime"><tt>llvm/runtime</tt></a></li>
-      <li><a href="#test"><tt>llvm/test</tt></a></li>
-      <li><a href="#test-suite"><tt>test-suite</tt></a></li>
-      <li><a href="#tools"><tt>llvm/tools</tt></a></li>
-      <li><a href="#utils"><tt>llvm/utils</tt></a></li>
-    </ol></li>
-
-  <li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
-      <ol>
-         <li><a href="#tutorial4">Example with Clang</a></li>
-      </ol>
-  <li><a href="#problems">Common Problems</a>
-  <li><a href="#links">Links</a>
-</ul>
-
-<div class="doc_author">
-  <p>Written by: 
-    <a href="mailto:criswell at uiuc.edu">John Criswell</a>, 
-    <a href="mailto:sabre at nondot.org">Chris Lattner</a>,
-    <a href="http://misha.brukman.net/">Misha Brukman</a>, 
-    <a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>, and
-    <a href="mailto:gshi1 at uiuc.edu">Guochun Shi</a>.
-  </p>
-</div>
-
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="overview">Overview</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>Welcome to LLVM! In order to get started, you first need to know some
-basic information.</p>
-
-<p>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.</p>
-
-<p>The second piece is the <a href="http://clang.llvm.org/">Clang</a> 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.
-</p>
-
-<p>
-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.
-</p>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="quickstart">Getting Started Quickly (A Summary)</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>The LLVM Getting Started documentation may be out of date.  So, the Clang 
-<a href="http://clang.llvm.org/get_started.html">Getting Started</a> page might 
-also be a good place to start.</p>
-
-<p>Here's the short story for getting up and running quickly with LLVM:</p>
-
-<ol>
-  <li>Read the documentation.</li>
-  <li>Read the documentation.</li>
-  <li>Remember that you were warned twice about reading the documentation.</li>
-
-  <li>Checkout LLVM:
-  <ul>
-    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
-  </ul>
-  </li>
-
-  <li>Checkout Clang:
-  <ul>
-    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
-    <li><tt>cd llvm/tools</tt>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/cfe/trunk clang</tt></li>
-  </ul>
-  </li>
-
-  <li>Checkout Compiler-RT:
-  <ul>
-    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
-    <li><tt>cd llvm/projects</tt>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk
-        compiler-rt</tt></li>
-  </ul>
-  </li>
-
-  <li>Get the Test Suite Source Code <b>[Optional]</b>
-  <ul>
-    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
-    <li><tt>cd llvm/projects</tt>
-    <li><tt>svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite</tt></li>
-  </ul>
-  </li>
-
-  <li>Configure and build LLVM and Clang:
-  <ul>
-    <li><tt>cd <i>where-you-want-to-build-llvm</i></tt></li>
-    <li><tt>mkdir build</tt> (for building without polluting the source dir)</li>
-    <li><tt>cd build</tt></li>
-    <li><tt>../llvm/configure [options]</tt>
-    <br>Some common options:
-
-      <ul>
-        <li><tt>--prefix=<i>directory</i></tt> -
-        Specify for <i>directory</i> the full pathname of where you
-        want the LLVM tools and libraries to be installed (default
-        <tt>/usr/local</tt>).</li>
-      </ul>
-
-      <ul>
-        <li><tt>--enable-optimized</tt> -
-        Compile with optimizations enabled (default is NO).</li>
-      </ul>
-
-      <ul>
-        <li><tt>--enable-assertions</tt> -
-        Compile with assertion checks enabled (default is YES).</li>
-      </ul>
-   </li>
-    <li><tt>make [-j]</tt> - 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.</li>
-    <li><tt>make check-all</tt> -
-    This run the regression tests to ensure everything is in working order.</li>
-    <li><tt>make update</tt> -
-    This command is used to update all the svn repositories at once, rather then
-    having to <tt>cd</tt> into the individual repositories and running
-    <tt>svn update</tt>.</li>
-    <li>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.</li>
-    <li>If you get an "internal compiler error (ICE)" or test failures, see 
-        <a href="#brokengcc">below</a>.</li>
-
-  </ul>
-  </li>
-
-</ol>
-
-<p>Consult the <a href="#starting">Getting Started with LLVM</a> section for
-detailed information on configuring and compiling LLVM.  See <a
-href="#environment">Setting Up Your Environment</a> for tips that simplify
-working with the Clang front end and LLVM tools.  Go to <a href="#layout">Program
-Layout</a> to learn about the layout of the source code tree.</p>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="requirements">Requirements</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>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.</p>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="hardware">Hardware</a>
-</h3>
-
-<div>
-
-<p>LLVM is known to work on the following platforms:</p>
-
-<table cellpadding="3" summary="Known LLVM platforms">
-<tr>
-  <th>OS</th>
-  <th>Arch</th>
-  <th>Compilers</th>
-</tr>
-<tr>
-  <td>AuroraUX</td>
-  <td>x86<sup><a href="#pf_1">1</a></sup></td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>Linux</td>
-  <td>x86<sup><a href="#pf_1">1</a></sup></td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>Linux</td>
-  <td>amd64</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>Solaris</td>
-  <td>V9 (Ultrasparc)</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>FreeBSD</td>
-  <td>x86<sup><a href="#pf_1">1</a></sup></td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>FreeBSD</td>
-  <td>amd64</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
-  <td>PowerPC</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>MacOS X<sup><a href="#pf_2">2</a>,<a href="#pf_9">9</a></sup></td>
-  <td>x86</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>Cygwin/Win32</td>
-  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a>,
-     <a href="#pf_11">11</a></sup></td>
-  <td>GCC 3.4.X, binutils 2.20</td>
-</tr>
-<tr>
-  <td>MinGW/Win32</td>
-  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_6">6</a>,
-     <a href="#pf_8">8</a>, <a href="#pf_10">10</a>,
-     <a href="#pf_11">11</a></sup></td>
-  <td>GCC 3.4.X, binutils 2.20</td>
-</tr>
-</table>
-
-<p>LLVM has partial support for the following platforms:</p>
-
-<table summary="LLVM partial platform support">
-<tr>
-  <th>OS</th>
-  <th>Arch</th>
-  <th>Compilers</th>
-</tr>
-<tr>
-  <td>Windows</td>
-  <td>x86<sup><a href="#pf_1">1</a></sup></td>
-  <td>Visual Studio 2008 or higher<sup><a href="#pf_4">4</a>,<a href="#pf_5">5</a></sup></td>
-<tr>
-  <td>AIX<sup><a href="#pf_3">3</a>,<a href="#pf_4">4</a></sup></td>
-  <td>PowerPC</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>Linux<sup><a href="#pf_3">3</a>,<a href="#pf_5">5</a></sup></td>
-  <td>PowerPC</td>
-  <td>GCC</td>
-</tr>
-
-<tr>
-  <td>Linux<sup><a href="#pf_7">7</a></sup></td>
-  <td>Alpha</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>Linux<sup><a href="#pf_7">7</a></sup></td>
-  <td>Itanium (IA-64)</td>
-  <td>GCC</td>
-</tr>
-<tr>
-  <td>HP-UX<sup><a href="#pf_7">7</a></sup></td>
-  <td>Itanium (IA-64)</td>
-  <td>HP aCC</td>
-</tr>
-<tr>
-  <td>Windows x64</td>
-  <td>x86-64</td>
-  <td>mingw-w64's GCC-4.5.x<sup><a href="#pf_12">12</a></sup></td>
-</tr>
-</table>
-
-<p><b>Notes:</b></p>
-
-<div class="doc_notes">
-<ol>
-<li><a name="pf_1">Code generation supported for Pentium processors and
-up</a></li>
-<li><a name="pf_2">Code generation supported for 32-bit ABI only</a></li>
-<li><a name="pf_3">No native code generation</a></li>
-<li><a name="pf_4">Build is not complete: one or more tools do not link or function</a></li>
-<li><a name="pf_5">The GCC-based C/C++ frontend does not build</a></li>
-<li><a name="pf_6">The port is done using the MSYS shell.</a></li>
-<li><a name="pf_7">Native code generation exists but is not complete.</a></li>
-<li><a name="pf_8">Binutils 2.20 or later is required to build the assembler
-    generated by LLVM properly.</a></li>
-<li><a name="pf_9">Xcode 2.5 and gcc 4.0.1</a> (Apple Build 5370) will trip
-    internal LLVM assert messages when compiled for Release at optimization
-    levels greater than 0 (i.e., <i>"-O1"</i> and higher).
-    Add <i>OPTIMIZE_OPTION="-O0"</i> to the build command line
-    if compiling for LLVM Release or bootstrapping the LLVM toolchain.</li>
-<li><a name="pf_10">For MSYS/MinGW on Windows, be sure to install the MSYS
-    version of the perl package, and be sure it appears in your path
-    before any Windows-based versions such as Strawberry Perl and
-    ActivePerl, as these have Windows-specifics that will cause the
-    build to fail.</a></li>
-<li><a name="pf_11">To use LLVM modules on Win32-based system,
-    you may configure LLVM with <i>"--enable-shared"</i>.</a></li>
-<li><a name="pf_12">To compile SPU backend, you need to add
-    <tt>"LDFLAGS=-Wl,--stack,16777216"</tt> to configure.</a></li>
-</ol>
-</div>
-
-<p>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 <tt>ONLY_TOOLS="tools you need"</tt> to make.  The Release build
-requires considerably less space.</p>
-
-<p>The LLVM suite <i>may</i> 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.</p>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="software">Software</a>
-</h3>
-<div>
-  <p>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.</p>
-  <table summary="Packages required to compile LLVM">
-    <tr><th>Package</th><th>Version</th><th>Notes</th></tr>
-
-    <tr>
-      <td><a href="http://savannah.gnu.org/projects/make">GNU Make</a></td>
-      <td>3.79, 3.79.1</td>
-      <td>Makefile/build processor</td>
-    </tr>
-
-    <tr>
-      <td><a href="http://gcc.gnu.org/">GCC</a></td>
-      <td>3.4.2</td>
-      <td>C/C++ compiler<sup><a href="#sf1">1</a></sup></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.gnu.org/software/texinfo/">TeXinfo</a></td>
-      <td>4.5</td>
-      <td>For building the CFE</td>
-    </tr>
-
-    <tr>
-      <td><a href="http://subversion.tigris.org/project_packages.html">SVN</a></td>
-      <td>≥1.3</td>
-      <td>Subversion access to LLVM<sup><a href="#sf2">2</a></sup></td>
-    </tr>
-
-    <!-- FIXME:
-    Do we support dg?
-    Are DejaGnu and expect obsolete?
-    Shall we mention Python? -->
-
-    <tr>
-      <td><a href="http://savannah.gnu.org/projects/dejagnu">DejaGnu</a></td>
-      <td>1.4.2</td>
-      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.tcl.tk/software/tcltk/">tcl</a></td>
-      <td>8.3, 8.4</td>
-      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://expect.nist.gov/">expect</a></td>
-      <td>5.38.0</td>
-      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.perl.com/download.csp">perl</a></td>
-      <td>≥5.6.0</td>
-      <td>Utilities</td>
-    </tr>
-
-    <tr>
-      <td><a href="http://savannah.gnu.org/projects/m4">GNU M4</a>
-      <td>1.4</td>
-      <td>Macro processor for configuration<sup><a href="#sf4">4</a></sup></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.gnu.org/software/autoconf/">GNU Autoconf</a></td>
-      <td>2.60</td>
-      <td>Configuration script builder<sup><a href="#sf4">4</a></sup></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.gnu.org/software/automake/">GNU Automake</a></td>
-      <td>1.9.6</td>
-      <td>aclocal macro generator<sup><a href="#sf4">4</a></sup></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://savannah.gnu.org/projects/libtool">libtool</a></td>
-      <td>1.5.22</td>
-      <td>Shared library manager<sup><a href="#sf4">4</a></sup></td>
-    </tr>
-
-  </table>
-
-  <p><b>Notes:</b></p>
-  <div class="doc_notes">
-  <ol>
-    <li><a name="sf1">Only the C and C++ languages are needed so there's no
-      need to build the other languages for LLVM's purposes.</a> See 
-      <a href="#brokengcc">below</a> for specific version info.</li>
-    <li><a name="sf2">You only need Subversion if you intend to build from the 
-      latest LLVM sources. If you're working from a release distribution, you
-      don't need Subversion.</a></li>
-    <li><a name="sf3">Only needed if you want to run the automated test 
-      suite in the <tt>llvm/test</tt> directory.</a></li>
-    <li><a name="sf4">If you want to make changes to the configure scripts, 
-      you will need GNU autoconf (2.60), and consequently, GNU M4 (version 1.4 
-      or higher). You will also need automake (1.9.6). We only use aclocal 
-      from that package.</a></li>
-  </ol>
-  </div>
-  
-  <p>Additionally, your compilation host is expected to have the usual 
-  plethora of Unix utilities. Specifically:</p>
-  <ul>
-    <li><b>ar</b> - archive library builder</li>
-    <li><b>bzip2*</b> - bzip2 command for distribution generation</li>
-    <li><b>bunzip2*</b> - bunzip2 command for distribution checking</li>
-    <li><b>chmod</b> - change permissions on a file</li>
-    <li><b>cat</b> - output concatenation utility</li>
-    <li><b>cp</b> - copy files</li>
-    <li><b>date</b> - print the current date/time </li>
-    <li><b>echo</b> - print to standard output</li>
-    <li><b>egrep</b> - extended regular expression search utility</li>
-    <li><b>find</b> - find files/dirs in a file system</li>
-    <li><b>grep</b> - regular expression search utility</li>
-    <li><b>gzip*</b> - gzip command for distribution generation</li>
-    <li><b>gunzip*</b> - gunzip command for distribution checking</li>
-    <li><b>install</b> - install directories/files </li>
-    <li><b>mkdir</b> - create a directory</li>
-    <li><b>mv</b> - move (rename) files</li>
-    <li><b>ranlib</b> - symbol table builder for archive libraries</li>
-    <li><b>rm</b> - remove (delete) files and directories</li>
-    <li><b>sed</b> - stream editor for transforming output</li>
-    <li><b>sh</b> - Bourne shell for make build scripts</li>
-    <li><b>tar</b> - tape archive for distribution generation</li>
-    <li><b>test</b> - test things in file system</li>
-    <li><b>unzip*</b> - unzip command for distribution checking</li>
-    <li><b>zip*</b> - zip command for distribution generation</li>
-  </ul>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="brokengcc">Broken versions of GCC and other tools</a>
-</h3>
-
-<div>
-
-<p>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 <a href="mailto:llvmdev at cs.uiuc.edu">let
-us know</a>.  Please use the "<tt>gcc -v</tt>" command to find out which version
-of GCC you are using.
-</p>
-
-<p><b>GCC versions prior to 3.0</b>: GCC 2.96.x and before had several
-problems in the STL that effectively prevent it from compiling LLVM.
-</p>
-
-<p><b>GCC 3.2.2 and 3.2.3</b>: These versions of GCC fails to compile LLVM with
-a bogus template error.  This was fixed in later GCCs.</p>
-
-<p><b>GCC 3.3.2</b>: This version of GCC suffered from a <a 
-href="http://gcc.gnu.org/PR13392">serious bug</a> which causes it to crash in
-the "<tt>convert_from_eh_region_ranges_1</tt>" GCC function.</p>
-
-<p><b>Cygwin GCC 3.3.3</b>: The version of GCC 3.3.3 commonly shipped with 
-   Cygwin does not work.</p>
-<p><b>SuSE GCC 3.3.3</b>: 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.</p>
-<p><b>GCC 3.4.0 on linux/x86 (32-bit)</b>: 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).</p>
-<p><b>GCC 3.4.2 on linux/x86 (32-bit)</b>: 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 ..."</p>
-<p><b>GCC 3.4.x on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1056">
-   miscompiles portions of LLVM</a>.</p>
-<p><b>GCC 3.4.4 (CodeSourcery ARM 2005q3-2)</b>: this compiler miscompiles LLVM
-   when building with optimizations enabled.  It appears to work with 
-   "<tt>make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O1</tt>" or build a debug
-   build.</p>
-<p><b>IA-64 GCC 4.0.0</b>: The IA-64 version of GCC 4.0.0 is known to
-   miscompile LLVM.</p>
-<p><b>Apple Xcode 2.3</b>: 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".</p>
-<p><b>GCC 4.1.1</b>: 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.</p>
-<p><b>GCC 4.1.1 on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1063">
-   miscompiles portions of LLVM</a> 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.</p>
-<p><b>GCC 4.1.2 on OpenSUSE</b>: Seg faults during libstdc++ build and on x86_64
-platforms compiling md5.c gets a mangled constant.</p>
-<p><b>GCC 4.1.2 (20061115 (prerelease) (Debian 4.1.1-21)) on Debian</b>: Appears
-to miscompile parts of LLVM 2.4. One symptom is ValueSymbolTable complaining
-about symbols remaining in the table on destruction.</p>
-<p><b>GCC 4.1.2 20071124 (Red Hat 4.1.2-42)</b>: Suffers from the same symptoms
-as the previous one. It appears to work with ENABLE_OPTIMIZED=0 (the default).</p>
-<p><b>Cygwin GCC 4.3.2 20080827 (beta) 2</b>:
-  Users <a href="http://llvm.org/PR4145">reported</a> various problems related
-  with link errors when using this GCC version.</p>
-<p><b>Debian GCC 4.3.2 on X86</b>: Crashes building some files in LLVM 2.6.</p>
-<p><b>GCC 4.3.3 (Debian 4.3.3-10) on ARM</b>: 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.</p>
-<p><b>SUSE 11 GCC 4.3.4</b>: Miscompiles LLVM, causing crashes in ValueHandle logic.</p>
-<p><b>GCC 4.3.5 and GCC 4.4.5 on ARM</b>: These can miscompile <tt>value >>
-1</tt> even at -O0. A test failure in <tt>test/Assembler/alignstack.ll</tt> is
-one symptom of the problem.
-<p><b>GNU ld 2.16.X</b>. 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.</p>
-
-<p><b>GNU binutils 2.17</b>: Binutils 2.17 contains <a 
-href="http://sourceware.org/bugzilla/show_bug.cgi?id=3111">a bug</a> 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).</p>
-
-<p><b>GNU Binutils 2.19.1 Gold</b>: This version of Gold contained
-<a href="http://sourceware.org/bugzilla/show_bug.cgi?id=9836">a bug</a>
-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.</p>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="starting">Getting Started with LLVM</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>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.</p>
-
-<p>The later sections of this guide describe the <a
-href="#layout">general layout</a> of the LLVM source tree, a <a
-href="#tutorial">simple example</a> using the LLVM tool chain, and <a
-href="#links">links</a> to find more information about LLVM or to get
-help via e-mail.</p>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="terminology">Terminology and Notation</a>
-</h3>
-
-<div>
-
-<p>Throughout this manual, the following names are used to denote paths
-specific to the local system and working environment.  <i>These are not
-environment variables you need to set but just strings used in the rest
-of this document below</i>.  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:</p>
-
-<dl>
-    <dt>SRC_ROOT
-    <dd>
-    This is the top level directory of the LLVM source tree.
-    <br><br>
-
-    <dt>OBJ_ROOT
-    <dd>
-    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).
-    <br><br>
-
-</dl>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="environment">Setting Up Your Environment</a>
-</h3>
-
-<div>
-
-<p>
-In order to compile and use LLVM, you may need to set some environment
-variables.
-
-<dl>
-  <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bitcode/libs</tt></dt>
-  <dd>[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
-  <tt>lib</tt> directory.</dd>
-</dl>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="unpack">Unpacking the LLVM Archives</a>
-</h3>
-
-<div>
-
-<p>
-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.
-</p>
-
-<p>The files are as follows, with <em>x.y</em> marking the version number:
-<dl>
-  <dt><tt>llvm-x.y.tar.gz</tt></dt>
-  <dd>Source release for the LLVM libraries and tools.<br></dd>
-
-  <dt><tt>llvm-test-x.y.tar.gz</tt></dt>
-  <dd>Source release for the LLVM test-suite.</dd>
-
-  <dt><tt>llvm-gcc-4.2-x.y.source.tar.gz</tt></dt>
-  <dd>Source release of the llvm-gcc-4.2 front end.  See README.LLVM in the root
-      directory for build instructions.<br></dd>
-
-  <dt><tt>llvm-gcc-4.2-x.y-platform.tar.gz</tt></dt>
-  <dd>Binary release of the llvm-gcc-4.2 front end for a specific platform.<br></dd>
-
-</dl>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="checkout">Checkout LLVM from Subversion</a>
-</h3>
-
-<div>
-
-<p>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:</p>
-
-<ul>
-  <li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
-  <li>Read-Only: <tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
-  <li>Read-Write:<tt>svn co https://user@llvm.org/svn/llvm-project/llvm/trunk
-    llvm</tt></li>
-</ul>
-
-
-<p>This will create an '<tt>llvm</tt>' directory in the current
-directory and fully populate it with the LLVM source code, Makefiles,
-test directories, and local copies of documentation files.</p>
-
-<p>If you want to get a specific release (as opposed to the most recent
-revision), you can checkout it from the '<tt>tags</tt>' directory (instead of
-'<tt>trunk</tt>'). The following releases are located in the following
-subdirectories of the '<tt>tags</tt>' directory:</p>
-
-<ul>
-<li>Release 3.1: <b>RELEASE_31/final</b></li>
-<li>Release 3.0: <b>RELEASE_30/final</b></li>
-<li>Release 2.9: <b>RELEASE_29/final</b></li>
-<li>Release 2.8: <b>RELEASE_28</b></li>
-<li>Release 2.7: <b>RELEASE_27</b></li>
-<li>Release 2.6: <b>RELEASE_26</b></li>
-<li>Release 2.5: <b>RELEASE_25</b></li>
-<li>Release 2.4: <b>RELEASE_24</b></li>
-<li>Release 2.3: <b>RELEASE_23</b></li>
-<li>Release 2.2: <b>RELEASE_22</b></li>
-<li>Release 2.1: <b>RELEASE_21</b></li>
-<li>Release 2.0: <b>RELEASE_20</b></li>
-<li>Release 1.9: <b>RELEASE_19</b></li>
-<li>Release 1.8: <b>RELEASE_18</b></li>
-<li>Release 1.7: <b>RELEASE_17</b></li>
-<li>Release 1.6: <b>RELEASE_16</b></li>
-<li>Release 1.5: <b>RELEASE_15</b></li>
-<li>Release 1.4: <b>RELEASE_14</b></li>
-<li>Release 1.3: <b>RELEASE_13</b></li>
-<li>Release 1.2: <b>RELEASE_12</b></li>
-<li>Release 1.1: <b>RELEASE_11</b></li>
-<li>Release 1.0: <b>RELEASE_1</b></li>
-</ul>
-
-<p>If you would like to get the LLVM test suite (a separate package as of 1.4),
-you get it from the Subversion repository:</p>
-
-<div class="doc_code">
-<pre>
-% cd llvm/projects
-% svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite
-</pre>
-</div>
-
-<p>By placing it in the <tt>llvm/projects</tt>, it will be automatically
-configured by the LLVM configure script as well as automatically updated when
-you run <tt>svn update</tt>.</p>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="git_mirror">GIT mirror</a>
-</h3>
-
-<div>
-
-<p>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 <tt>trunk</tt> for each project. You can do the
-  read-only GIT clone of LLVM via:</p>
-
-<pre class="doc_code">
-git clone http://llvm.org/git/llvm.git
-</pre>
-
-<p>If you want to check out clang too, run:</p>
-
-<pre class="doc_code">
-git clone http://llvm.org/git/llvm.git
-cd llvm/tools
-git clone http://llvm.org/git/clang.git
-</pre>
-
-<p>
-Since the upstream repository is in Subversion, you should use
-<tt>"git pull --rebase"</tt>
-instead of <tt>"git pull"</tt> to avoid generating a non-linear
-history in your clone.
-To configure <tt>"git pull"</tt> to pass <tt>--rebase</tt> by default
-on the master branch, run the following command:
-</p>
-
-<pre class="doc_code">
-git config branch.master.rebase true
-</pre>
-
-<h4>Sending patches with Git</h4>
-<div>
-<p>
-Please read <a href="DeveloperPolicy.html#patches">Developer Policy</a>, too.
-</p>
-
-<p>
-Assume <tt>master</tt> points the upstream and <tt>mybranch</tt> points your
-working branch, and <tt>mybranch</tt> is rebased onto <tt>master</tt>.
-At first you may check sanity of whitespaces:
-</p>
-
-<pre class="doc_code">
-git diff --check master..mybranch
-</pre>
-
-<p>
-The easiest way to generate a patch is as below:
-</p>
-
-<pre class="doc_code">
-git diff master..mybranch > /path/to/mybranch.diff
-</pre>
-
-<p>
-It is a little different from svn-generated diff. git-diff-generated diff has
-prefixes like <tt>a/</tt> and <tt>b/</tt>. Don't worry, most developers might
-know it could be accepted with <tt>patch -p1 -N</tt>.
-</p>
-
-<p>
-But you may generate patchset with git-format-patch. It generates
-by-each-commit patchset. To generate patch files to attach to your article:
-</p>
-
-<pre class="doc_code">
-git format-patch --no-attach master..mybranch -o /path/to/your/patchset
-</pre>
-
-<p>
-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].
-</p>
-
-<pre class="doc_code">
-git format-patch --attach master..mybranch --stdout | git imap-send
-</pre>
-
-<p>
-Then, your .git/config should have [imap] sections.
-</p>
-
-<pre class="doc_code">
-[imap]
-        host = imaps://imap.gmail.com
-        user = <em>your.gmail.account</em>@gmail.com
-        pass = <em>himitsu!</em>
-        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-"
-</pre>
-
-</div>
-
-<h4>For developers to work with git-svn</h4>
-<div>
-
-<p>To set up clone from which you can submit code using
-   <tt>git-svn</tt>, run:</p>
-
-<pre class="doc_code">
-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
-</pre>
-
-<p>To update this clone without generating git-svn tags that conflict
-with the upstream git repo, run:</p>
-
-<pre class="doc_code">
-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)
-</pre>
-
-<p>This leaves your working directories on their master branches, so
-you'll need to <tt>checkout</tt> each working branch individually and
-<tt>rebase</tt> 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.)</p>
-
-<p>The git-svn metadata can get out of sync after you mess around with
-branches and <code>dcommit</code>. When that happens, <code>git svn
-dcommit</code> stops working, complaining about files with uncommitted
-changes. The fix is to rebuild the metadata:</p>
-
-<pre class="doc_code">
-rm -rf .git/svn
-git svn rebase -l
-</pre>
-
-</div>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="config">Local LLVM Configuration</a>
-</h3>
-
-<div>
-
-  <p>Once checked out from the Subversion repository, the LLVM suite source 
-  code must be
-configured via the <tt>configure</tt> script.  This script sets variables in the
-various <tt>*.in</tt> files, most notably <tt>llvm/Makefile.config</tt> and 
-<tt>llvm/include/Config/config.h</tt>.  It also populates <i>OBJ_ROOT</i> with 
-the Makefiles needed to begin building LLVM.</p>
-
-<p>The following environment variables are used by the <tt>configure</tt>
-script to configure the build system:</p>
-
-<table summary="LLVM configure script environment variables">
-  <tr><th>Variable</th><th>Purpose</th></tr>
-  <tr>
-    <td>CC</td>
-    <td>Tells <tt>configure</tt> which C compiler to use.  By default,
-        <tt>configure</tt> will look for the first GCC C compiler in
-        <tt>PATH</tt>.  Use this variable to override
-        <tt>configure</tt>'s default behavior.</td>
-  </tr>
-  <tr>
-    <td>CXX</td>
-    <td>Tells <tt>configure</tt> which C++ compiler to use.  By default,
-       <tt>configure</tt> will look for the first GCC C++ compiler in
-       <tt>PATH</tt>.  Use this variable to override
-       <tt>configure</tt>'s default behavior.</td>
-  </tr>
-</table>
-
-<p>The following options can be used to set or enable LLVM specific options:</p>
-
-<dl>
-  <dt><i>--enable-optimized</i></dt>
-  <dd>
-    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).
-    <br><br>
-  </dd>
-  <dt><i>--enable-debug-runtime</i></dt>
-  <dd>
-    Enables debug symbols in the runtime libraries. The default is to strip
-    debug symbols from the runtime libraries. 
-  </dd>
-  <dt><i>--enable-jit</i></dt>
-  <dd>
-    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.
-    <br><br>
-  </dd>
-  <dt><i>--enable-targets=</i><tt>target-option</tt></dt>
-  <dd>Controls which targets will be built and linked into llc. The default 
-  value for <tt>target_options</tt> 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: <br>
-  <tt>arm, cpp, hexagon, mblaze, mips, mipsel, msp430, powerpc, ptx, sparc, spu, x86, x86_64, xcore</tt>.
-  <br><br></dd>
-  <dt><i>--enable-doxygen</i></dt>
-  <dd>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.</dd>
-  <dt><i>--with-udis86</i></dt>
-  <dd>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 <a href="http://udis86.sourceforge.net/">udis86</a> x86 (both 32 and 64
-  bits) disassembler library.</dd>
-</dl>
-
-<p>To configure LLVM, follow these steps:</p>
-
-<ol>
-    <li><p>Change directory into the object root directory:</p>
-
-    <div class="doc_code"><pre>% cd <i>OBJ_ROOT</i></pre></div></li>
-
-    <li><p>Run the <tt>configure</tt> script located in the LLVM source
-    tree:</p>
-
-    <div class="doc_code">
-    <pre>% <i>SRC_ROOT</i>/configure --prefix=/install/path [other options]</pre>
-    </div></li>
-</ol>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="compile">Compiling the LLVM Suite Source Code</a>
-</h3>
-
-<div>
-
-<p>Once you have configured LLVM, you can build it.  There are three types of
-builds:</p>
-
-<dl>
-    <dt>Debug Builds
-    <dd>
-    These builds are the default when one is using an Subversion checkout and 
-    types <tt>gmake</tt> (unless the <tt>--enable-optimized</tt> 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 <tt>--disable-optimized</tt> option must be passed
-    to <tt>configure</tt>.
-    <br><br>
-
-    <dt>Release (Optimized) Builds
-    <dd>
-    These builds are enabled with the <tt>--enable-optimized</tt> option to
-    <tt>configure</tt> or by specifying <tt>ENABLE_OPTIMIZED=1</tt> on the
-    <tt>gmake</tt> 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.
-    <br><br>
-
-    <dt>Profile Builds
-    <dd>
-    These builds are for use with profiling.  They compile profiling
-    information into the code for use with programs like <tt>gprof</tt>.
-    Profile builds must be started by specifying <tt>ENABLE_PROFILING=1</tt>
-    on the <tt>gmake</tt> command line.
-</dl>
-
-<p>Once you have LLVM configured, you can build it by entering the
-<i>OBJ_ROOT</i> directory and issuing the following command:</p>
-
-<div class="doc_code"><pre>% gmake</pre></div>
-
-<p>If the build fails, please <a href="#brokengcc">check here</a> to see if you
-are using a version of GCC that is known not to compile LLVM.</p>
-
-<p>
-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:</p>
-
-<div class="doc_code"><pre>% gmake -j2</pre></div>
-
-<p>There are several special targets which are useful when working with the LLVM
-source code:</p>
-
-<dl>
-  <dt><tt>gmake clean</tt>
-  <dd>
-  Removes all files generated by the build.  This includes object files,
-  generated C/C++ files, libraries, and executables.
-  <br><br>
-
-  <dt><tt>gmake dist-clean</tt>
-  <dd>
-  Removes everything that <tt>gmake clean</tt> does, but also removes files
-  generated by <tt>configure</tt>.  It attempts to return the source tree to the
-  original state in which it was shipped.
-  <br><br>
-
-  <dt><tt>gmake install</tt>
-  <dd>
-  Installs LLVM header files, libraries, tools, and documentation in a
-  hierarchy 
-  under $PREFIX, specified with <tt>./configure --prefix=[dir]</tt>, which 
-  defaults to <tt>/usr/local</tt>.
-  <br><br>
-
-  <dt><tt>gmake -C runtime install-bytecode</tt>
-  <dd>
-  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.
-  <br><br>
-</dl>
-
-<p>Please see the <a href="MakefileGuide.html">Makefile Guide</a> for further
-details on these <tt>make</tt> targets and descriptions of other targets
-available.</p>
-
-<p>It is also possible to override default values from <tt>configure</tt> by
-declaring variables on the command line.  The following are some examples:</p>
-
-<dl>
-  <dt><tt>gmake ENABLE_OPTIMIZED=1</tt>
-  <dd>
-  Perform a Release (Optimized) build.
-  <br><br>
-
-  <dt><tt>gmake ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt>
-  <dd>
-  Perform a Release (Optimized) build without assertions enabled.
-  <br><br>
- 
-  <dt><tt>gmake ENABLE_OPTIMIZED=0</tt>
-  <dd>
-  Perform a Debug build.
-  <br><br>
-
-  <dt><tt>gmake ENABLE_PROFILING=1</tt>
-  <dd>
-  Perform a Profiling build.
-  <br><br>
-
-  <dt><tt>gmake VERBOSE=1</tt>
-  <dd>
-  Print what <tt>gmake</tt> is doing on standard output.
-  <br><br>
-
-  <dt><tt>gmake TOOL_VERBOSE=1</tt></dt>
-  <dd>Ask each tool invoked by the makefiles to print out what it is doing on 
-  the standard output. This also implies <tt>VERBOSE=1</tt>.
-  <br><br></dd>
-</dl>
-
-<p>Every directory in the LLVM object tree includes a <tt>Makefile</tt> to build
-it and any subdirectories that it contains.  Entering any directory inside the
-LLVM object tree and typing <tt>gmake</tt> should rebuild anything in or below
-that directory that is out of date.</p>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="cross-compile">Cross-Compiling LLVM</a>
-</h3>
-
-<div>
-  <p>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 <tt>--build</tt> and
-  <tt>--host</tt> options that are different. The values of these options must
-  be legal target triples that your GCC compiler supports.</p>
-
-  <p>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).</p>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="objfiles">The Location of LLVM Object Files</a>
-</h3>
-
-<div>
-
-<p>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.</p>
-
-<p>This is accomplished in the typical autoconf manner:</p>
-
-<ul>
-  <li><p>Change directory to where the LLVM object files should live:</p>
-
-      <div class="doc_code"><pre>% cd <i>OBJ_ROOT</i></pre></div></li>
-
-  <li><p>Run the <tt>configure</tt> script found in the LLVM source
-      directory:</p>
-
-      <div class="doc_code"><pre>% <i>SRC_ROOT</i>/configure</pre></div></li>
-</ul>
-
-<p>The LLVM build will place files underneath <i>OBJ_ROOT</i> in directories
-named after the build type:</p>
-
-<dl>
-  <dt>Debug Builds with assertions enabled (the default)
-  <dd>
-  <dl>
-    <dt>Tools
-    <dd><tt><i>OBJ_ROOT</i>/Debug+Asserts/bin</tt>
-    <dt>Libraries
-    <dd><tt><i>OBJ_ROOT</i>/Debug+Asserts/lib</tt>
-  </dl>
-  <br><br>
-
-  <dt>Release Builds
-  <dd>
-  <dl>
-    <dt>Tools
-    <dd><tt><i>OBJ_ROOT</i>/Release/bin</tt>
-    <dt>Libraries
-    <dd><tt><i>OBJ_ROOT</i>/Release/lib</tt>
-  </dl>
-  <br><br>
-
-  <dt>Profile Builds
-  <dd>
-  <dl>
-    <dt>Tools
-    <dd><tt><i>OBJ_ROOT</i>/Profile/bin</tt>
-    <dt>Libraries
-    <dd><tt><i>OBJ_ROOT</i>/Profile/lib</tt>
-  </dl>
-</dl>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="optionalconfig">Optional Configuration Items</a>
-</h3>
-
-<div>
-
-<p>
-If you're running on a Linux system that supports the "<a
-href="http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html">binfmt_misc</a>"
-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):</p>
-
-<div class="doc_code">
-<pre>
-$ 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
-</pre>
-</div>
-
-<p>
-This allows you to execute LLVM bitcode files directly.  On Debian, you 
-can also use this command instead of the 'echo' command above:
-</p>
-
-<div class="doc_code">
-<pre>
-$ sudo update-binfmts --install llvm /path/to/lli --magic 'BC'
-</pre>
-</div>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="layout">Program Layout</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>One useful source of information about the LLVM source base is the LLVM <a
-href="http://www.doxygen.org/">doxygen</a> documentation available at <tt><a
-href="http://llvm.org/doxygen/">http://llvm.org/doxygen/</a></tt>.
-The following is a brief introduction to code layout:</p>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="examples"><tt>llvm/examples</tt></a>
-</h3>
-
-<div>
-  <p>This directory contains some simple examples of how to use the LLVM IR and
-  JIT.</p>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="include"><tt>llvm/include</tt></a>
-</h3>
-
-<div>
-
-<p>This directory contains public header files exported from the LLVM
-library. The three main subdirectories of this directory are:</p>
-
-<dl>
-  <dt><tt><b>llvm/include/llvm</b></tt></dt>
-  <dd>This directory contains all of the LLVM specific header files.  This 
-  directory also has subdirectories for different portions of LLVM: 
-  <tt>Analysis</tt>, <tt>CodeGen</tt>, <tt>Target</tt>, <tt>Transforms</tt>, 
-  etc...</dd>
-
-  <dt><tt><b>llvm/include/llvm/Support</b></tt></dt>
-  <dd>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.
-  </dd>
-
-  <dt><tt><b>llvm/include/llvm/Config</b></tt></dt>
-  <dd>This directory contains header files configured by the <tt>configure</tt> 
-  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 <tt>configure</tt> script generates.</dd>
-</dl>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="lib"><tt>llvm/lib</tt></a>
-</h3>
-
-<div>
-
-<p>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 <a href="#tools">tools</a>.</p>
-
-<dl>
-  <dt><tt><b>llvm/lib/VMCore/</b></tt></dt>
-  <dd> This directory holds the core LLVM source files that implement core 
-  classes like Instruction and BasicBlock.</dd>
-
-  <dt><tt><b>llvm/lib/AsmParser/</b></tt></dt>
-  <dd>This directory holds the source code for the LLVM assembly language parser 
-  library.</dd>
-
-  <dt><tt><b>llvm/lib/BitCode/</b></tt></dt>
-  <dd>This directory holds code for reading and write LLVM bitcode.</dd>
-
-  <dt><tt><b>llvm/lib/Analysis/</b></tt><dd>This directory contains a variety of
-  different program analyses, such as Dominator Information, Call Graphs,
-  Induction Variables, Interval Identification, Natural Loop Identification,
-  etc.</dd>
-
-  <dt><tt><b>llvm/lib/Transforms/</b></tt></dt>
-  <dd> 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.</dd>
-
-  <dt><tt><b>llvm/lib/Target/</b></tt></dt>
-  <dd> This directory contains files that describe various target architectures
-  for code generation.  For example, the <tt>llvm/lib/Target/X86</tt> 
-  directory holds the X86 machine description while
-  <tt>llvm/lib/Target/ARM</tt> implements the ARM backend.</dd>
-    
-  <dt><tt><b>llvm/lib/CodeGen/</b></tt></dt>
-  <dd> This directory contains the major parts of the code generator: Instruction 
-  Selector, Instruction Scheduling, and Register Allocation.</dd>
-
-  <dt><tt><b>llvm/lib/MC/</b></tt></dt>
-  <dd>(FIXME: T.B.D.)</dd>
-
-  <!--FIXME: obsoleted -->
-  <dt><tt><b>llvm/lib/Debugger/</b></tt></dt>
-  <dd> 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.</dd>
-
-  <dt><tt><b>llvm/lib/ExecutionEngine/</b></tt></dt>
-  <dd> This directory contains libraries for executing LLVM bitcode directly 
-  at runtime in both interpreted and JIT compiled fashions.</dd>
-
-  <dt><tt><b>llvm/lib/Support/</b></tt></dt>
-  <dd> This directory contains the source code that corresponds to the header
-  files located in <tt>llvm/include/ADT/</tt>
-  and <tt>llvm/include/Support/</tt>.</dd>
-</dl>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="projects"><tt>llvm/projects</tt></a>
-</h3>
-
-<div>
-  <p>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 <tt>llvm/projects/sample</tt> for an example of how
-  to set up your own project.</p>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="runtime"><tt>llvm/runtime</tt></a>
-</h3>
-
-<div>
-
-<p>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.</p>
-
-<p>Unlike the rest of the LLVM suite, this directory needs the LLVM GCC front
-end to compile.</p>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="test"><tt>llvm/test</tt></a>
-</h3>
-
-<div>
-  <p>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.</p>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="test-suite"><tt>test-suite</tt></a>
-</h3>
-
-<div>
-  <p>This is not a directory in the normal llvm module; it is a separate
-  Subversion
-  module that must be checked out (usually to <tt>projects/test-suite</tt>). 
-  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 
-  <a href="TestingGuide.html">Testing Guide</a> document.</p>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="tools"><tt>llvm/tools</tt></a>
-</h3>
-
-<div>
-
-<p>The <b>tools</b> 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 <tt>tool_name -help</tt>.  The
-following is a brief introduction to the most important tools.  More detailed
-information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
-
-<dl>
-
-  <dt><tt><b>bugpoint</b></tt></dt>
-  <dd><tt>bugpoint</tt> 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 <a
-  href="HowToSubmitABug.html">HowToSubmitABug.html</a> for more information
-  on using <tt>bugpoint</tt>.</dd>
-
-  <dt><tt><b>llvm-ar</b></tt></dt>
-  <dd>The archiver produces an archive containing
-  the given LLVM bitcode files, optionally with an index for faster
-  lookup.</dd>
-  
-  <dt><tt><b>llvm-as</b></tt></dt>
-  <dd>The assembler transforms the human readable LLVM assembly to LLVM 
-  bitcode.</dd>
-
-  <dt><tt><b>llvm-dis</b></tt></dt>
-  <dd>The disassembler transforms the LLVM bitcode to human readable 
-  LLVM assembly.</dd>
-
-  <dt><tt><b>llvm-link</b></tt></dt>
-  <dd><tt>llvm-link</tt>, not surprisingly, links multiple LLVM modules into 
-  a single program.</dd>
-  
-  <dt><tt><b>lli</b></tt></dt>
-  <dd><tt>lli</tt> 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, <tt>lli</tt>
-  will function as a Just-In-Time compiler (if the functionality was compiled
-  in), and will execute the code <i>much</i> faster than the interpreter.</dd>
-
-  <dt><tt><b>llc</b></tt></dt>
-  <dd> <tt>llc</tt> is the LLVM backend compiler, which
-  translates LLVM bitcode to a native code assembly file or to C code (with
-  the -march=c option).</dd>
-
-  <dt><tt><b>llvm-gcc</b></tt></dt>
-  <dd><tt>llvm-gcc</tt> 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 <tt>-emit-llvm</tt> option) instead of the
-  usual machine code output.  It works just like any other GCC compiler, 
-  taking the typical <tt>-c, -S, -E, -o</tt> options that are typically used.  
-  Additionally, the source code for <tt>llvm-gcc</tt> is available as a 
-  separate Subversion module.</dd>
-
-  <dt><tt><b>opt</b></tt></dt>
-  <dd><tt>opt</tt> 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 '<tt>opt -help</tt>' command is a good way to 
-  get a list of the program transformations available in LLVM.<br>
-  <dd><tt>opt</tt> 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.</dd>
-</dl>
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="utils"><tt>llvm/utils</tt></a>
-</h3>
-
-<div>
-
-<p>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.</p>
-
-<dl>
-  <dt><tt><b>codegen-diff</b></tt> <dd><tt>codegen-diff</tt> 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 <tt>`perldoc codegen-diff'</tt>.<br><br>
-
-  <dt><tt><b>emacs/</b></tt> <dd>The <tt>emacs</tt> 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 <tt>README</tt> file in that directory.<br><br>
-
-  <dt><tt><b>getsrcs.sh</b></tt> <dd>The <tt>getsrcs.sh</tt> 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:
-  <tt>xemacs `utils/getsources.sh`</tt> from the top of your LLVM source
-  tree.<br><br>
-
-  <dt><tt><b>llvmgrep</b></tt></dt>
-  <dd>This little tool performs an "egrep -H -n" on each source file in LLVM and
-  passes to it a regular expression provided on <tt>llvmgrep</tt>'s command
-  line. This is a very efficient way of searching the source base for a
-  particular regular expression.</dd>
-
-  <dt><tt><b>makellvm</b></tt> <dd>The <tt>makellvm</tt> 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
-  <tt>llvm/lib/Target/Sparc</tt>, if <tt>makellvm</tt> is in your path,
-  simply running <tt>makellvm llc</tt> will make a build of the current
-  directory, switch to directory <tt>llvm/tools/llc</tt> and build it,
-  causing a re-linking of LLC.<br><br>
-
-  <dt><tt><b>TableGen/</b></tt> <dd>The <tt>TableGen</tt> directory contains
-  the tool used to generate register descriptions, instruction set
-  descriptions, and even assemblers from common TableGen description
-  files.<br><br>
-
-  <dt><tt><b>vim/</b></tt> <dd>The <tt>vim</tt> 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 <tt>README</tt> file in that directory.<br><br>
-
-</dl>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="tutorial">An Example Using the LLVM Tool Chain</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-<p>This section gives an example of using LLVM with the Clang front end.</p>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="tutorial4">Example with clang</a>
-</h3>
-
-<div>
-
-<ol>
-  <li><p>First, create a simple C file, name it 'hello.c':</p>
-
-<div class="doc_code">
-<pre>
-#include <stdio.h>
-
-int main() {
-  printf("hello world\n");
-  return 0;
-}
-</pre></div></li>
-
-  <li><p>Next, compile the C file into a native executable:</p>
-
-      <div class="doc_code"><pre>% clang hello.c -o hello</pre></div>
-
-      <p>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).</p></li>
-
-  <li><p>Next, compile the C file into a LLVM bitcode file:</p>
-
-      <div class="doc_code">
-      <pre>% clang -O3 -emit-llvm hello.c -c -o hello.bc</pre></div>
-
-      <p>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 <a href="CommandGuide/index.html">standard LLVM tools</a> on
-         the bitcode file.</p></li>
-
-  <li><p>Run the program in both forms. To run the program, use:</p>
-      
-      <div class="doc_code"><pre>% ./hello</pre></div>
- 
-      <p>and</p>
-
-      <div class="doc_code"><pre>% lli hello.bc</pre></div>
-
-      <p>The second examples shows how to invoke the LLVM JIT, <a
-       href="CommandGuide/html/lli.html">lli</a>.</p></li>
-
-  <li><p>Use the <tt>llvm-dis</tt> utility to take a look at the LLVM assembly
-      code:</p>
-
-<div class="doc_code">
-<pre>llvm-dis < hello.bc | less</pre>
-</div></li>
-
-  <li><p>Compile the program to native assembly using the LLC code
-      generator:</p>
-
-      <div class="doc_code"><pre>% llc hello.bc -o hello.s</pre></div></li>
-
-  <li><p>Assemble the native assembly language file into a program:</p>
-
-<div class="doc_code">
-<pre>
-<b>Solaris:</b> % /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native
-
-<b>Others:</b>  % gcc hello.s -o hello.native
-</pre>
-</div></li>
-
-  <li><p>Execute the native code program:</p>
-
-      <div class="doc_code"><pre>% ./hello.native</pre></div>
-
-      <p>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.</p>
-        </li>
-
-</ol>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="problems">Common Problems</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>If you are having problems building or using LLVM, or if you have any other
-general questions about LLVM, please consult the <a href="FAQ.html">Frequently
-Asked Questions</a> page.</p>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="links">Links</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>This document is just an <b>introduction</b> 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:</p>
-
-<ul>
-  <li><a href="http://llvm.org/">LLVM homepage</a></li>
-  <li><a href="http://llvm.org/doxygen/">LLVM doxygen tree</a></li>
-  <li><a href="http://llvm.org/docs/Projects.html">Starting a Project
-  that Uses LLVM</a></li>
-</ul>
-
-</div>
-
-<!-- *********************************************************************** -->
-
-<hr>
-<address>
-  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
-  <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
-
-  <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
-  <a href="http://llvm.x10sys.com/rspencer/">Reid Spencer</a><br>
-  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date$
-</address>
-</body>
-</html>

Removed: llvm/branches/AMDILBackend/docs/GoldPlugin.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/GoldPlugin.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/GoldPlugin.html (original)
+++ llvm/branches/AMDILBackend/docs/GoldPlugin.html (removed)
@@ -1,227 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-                      "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>LLVM gold plugin</title>
-  <link rel="stylesheet" href="_static/llvm.css" type="text/css">
-</head>
-<body>
-      
-<h1>LLVM gold plugin</h1>
-<ol>
-  <li><a href="#introduction">Introduction</a></li>
-  <li><a href="#build">How to build it</a></li>
-  <li><a href="#usage">Usage</a>
-  <ul>
-    <li><a href="#example1">Example of link time optimization</a></li>
-    <li><a href="#lto_autotools">Quickstart for using LTO with autotooled projects</a></li>
-  </ul></li>
-  <li><a href="#licensing">Licensing</a></li>
-</ol>
-<div class="doc_author">Written by Nick Lewycky</div>
-
-<!--=========================================================================-->
-<h2><a name="introduction">Introduction</a></h2>
-<!--=========================================================================-->
-<div>
-  <p>Building with link time optimization requires cooperation from the
-system linker. LTO support on Linux systems requires that you use
-the <a href="http://sourceware.org/binutils">gold linker</a> which supports
-LTO via plugins. This is the same mechanism used by the
-<a href="http://gcc.gnu.org/wiki/LinkTimeOptimization">GCC LTO</a>
-project.</p>
-  <p>The LLVM gold plugin implements the
-<a href="http://gcc.gnu.org/wiki/whopr/driver">gold plugin interface</a>
-on top of
-<a href="LinkTimeOptimization.html#lto">libLTO</a>.
-The same plugin can also be used by other tools such as <tt>ar</tt> and
-<tt>nm</tt>.
-</div>
-<!--=========================================================================-->
-<h2><a name="build">How to build it</a></h2>
-<!--=========================================================================-->
-<div>
-  <p>You need to have gold with plugin support and build the LLVMgold
-plugin. Check whether you have gold running <tt>/usr/bin/ld -v</tt>. It will
-report “GNU gold” or else &#8220GNU ld” if not. If you have
-gold, check for plugin support by running <tt>/usr/bin/ld -plugin</tt>. If it
-complains &#8220missing argument&#8221 then you have plugin support. If not,
-such as an “unknown option” error then you will either need to
-build gold or install a version with plugin support.</p>
-<ul>
-  <li>To build gold with plugin support:
-    <pre class="doc_code">
-mkdir binutils
-cd binutils
-cvs -z 9 -d :pserver:anoncvs at sourceware.org:/cvs/src login
-<em>{enter "anoncvs" as the password}</em>
-cvs -z 9 -d :pserver:anoncvs at sourceware.org:/cvs/src co binutils
-mkdir build
-cd build
-../src/configure --enable-gold --enable-plugins
-make all-gold
-</pre>
-    That should leave you with <tt>binutils/build/gold/ld-new</tt> which supports the <tt>-plugin</tt> option. It also built would have
-<tt>binutils/build/binutils/ar</tt> and <tt>nm-new</tt> which support plugins
-but don't have a visible -plugin option, instead relying on the gold plugin
-being present in <tt>../lib/bfd-plugins</tt> relative to where the binaries are
-placed.
-    <li>Build the LLVMgold plugin: Configure LLVM with
-    <tt>--with-binutils-include=/path/to/binutils/src/include</tt> and run
-    <tt>make</tt>.
-</ul>
-</div>
-<!--=========================================================================-->
-<h2><a name="usage">Usage</a></h2>
-<!--=========================================================================-->
-<div>
-
-  <p>The linker takes a <tt>-plugin</tt> option that points to the path of
-  the plugin <tt>.so</tt> file. To find out what link command <tt>gcc</tt>
-  would run in a given situation, run <tt>gcc -v <em>[...]</em></tt> and look
-  for the line where it runs <tt>collect2</tt>. Replace that with
-  <tt>ld-new -plugin /path/to/LLVMgold.so</tt> to test it out. Once you're
-  ready to switch to using gold, backup your existing <tt>/usr/bin/ld</tt>
-  then replace it with <tt>ld-new</tt>.</p>
-
-  <p>You can produce bitcode files from <tt>clang</tt> using
-  <tt>-emit-llvm</tt> or <tt>-flto</tt>, or the <tt>-O4</tt> flag which is
-  synonymous with <tt>-O3 -flto</tt>.</p>
-
-  <p>Any of these flags will also cause <tt>clang</tt> to look for the
-  gold plugin in the <tt>lib</tt> directory under its prefix and pass the
-  <tt>-plugin</tt> option to <tt>ld</tt>. It will not look for an alternate
-  linker, which is why you need gold to be the installed system linker in
-  your path.</p>
-
-  <p>If you want <tt>ar</tt> and <tt>nm</tt> to work seamlessly as well, install
-  <tt>LLVMgold.so</tt> to <tt>/usr/lib/bfd-plugins</tt>. If you built your
-  own gold, be sure to install the <tt>ar</tt> and <tt>nm-new</tt> you built to
-  <tt>/usr/bin</tt>.<p>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="example1">Example of link time optimization</a>
-</h3>
-
-<div>
-  <p>The following example shows a worked example of the gold plugin mixing
-  LLVM bitcode and native code.
-<pre class="doc_code">
---- a.c ---
-#include <stdio.h>
-
-extern void foo1(void);
-extern void foo4(void);
-
-void foo2(void) {
-  printf("Foo2\n");
-}
-
-void foo3(void) {
-  foo4();
-}
-
-int main(void) {
-  foo1();
-}
-
---- b.c ---
-#include <stdio.h>
-
-extern void foo2(void);
-
-void foo1(void) {
-  foo2();
-}
-
-void foo4(void) {
-  printf("Foo4");
-}
-
---- command lines ---
-$ clang -flto a.c -c -o a.o      # <-- a.o is LLVM bitcode file
-$ ar q a.a a.o                   # <-- a.a is an archive with LLVM bitcode
-$ clang b.c -c -o b.o            # <-- b.o is native object file
-$ clang -flto a.a b.o -o main    # <-- link with LLVMgold plugin
-</pre>
-
-  <p>Gold informs the plugin that foo3 is never referenced outside the IR,
-  leading LLVM to delete that function. However, unlike in the
-  <a href="LinkTimeOptimization.html#example1">libLTO
-  example</a> gold does not currently eliminate foo4.</p>
-</div>
-
-</div>
-
-<!--=========================================================================-->
-<h2>
-  <a name="lto_autotools">
-    Quickstart for using LTO with autotooled projects
-  </a>
-</h2>
-<!--=========================================================================-->
-<div>
-  <p>Once your system <tt>ld</tt>, <tt>ar</tt>, and <tt>nm</tt> all support LLVM
-     bitcode, everything is in place for an easy to use LTO build of autotooled
-     projects:</p>
-
-  <ul>
-    <li>Follow the instructions <a href="#build">on how to build LLVMgold.so</a>.</li>
-    <li>Install the newly built binutils to <tt>$PREFIX</tt></li>
-    <li>Copy <tt>Release/lib/LLVMgold.so</tt> to
-        <tt>$PREFIX/lib/bfd-plugins/</tt></li>
-    <li>Set environment variables (<tt>$PREFIX</tt> is where you installed clang and
-        binutils):
-<pre class="doc_code">
-export CC="$PREFIX/bin/clang -flto"
-export CXX="$PREFIX/bin/clang++ -flto"
-export AR="$PREFIX/bin/ar"
-export NM="$PREFIX/bin/nm"
-export RANLIB=/bin/true #ranlib is not needed, and doesn't support .bc files in .a
-export CFLAGS="-O4"
-</pre>
-     </li>
-     <li>Or you can just set your path:
-<pre class="doc_code">
-export PATH="$PREFIX/bin:$PATH"
-export CC="clang -flto"
-export CXX="clang++ -flto"
-export RANLIB=/bin/true
-export CFLAGS="-O4"
-</pre></li>
-     <li>Configure & build the project as usual:
-<pre class="doc_code">
-% ./configure && make && make check
-</pre></li>
-   </ul>
-
-   <p>The environment variable settings may work for non-autotooled projects
-      too, but you may need to set the <tt>LD</tt> environment variable as
-      well.</p>
-</div>
-
-<!--=========================================================================-->
-<h2><a name="licensing">Licensing</a></h2>
-<!--=========================================================================-->
-<div>
-  <p>Gold is licensed under the GPLv3. LLVMgold uses the interface file
-<tt>plugin-api.h</tt> from gold which means that the resulting LLVMgold.so
-binary is also GPLv3. This can still be used to link non-GPLv3 programs just
-as much as gold could without the plugin.</p>
-</div>
-
-<!-- *********************************************************************** -->
-<hr>
-<address>
-  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
-  <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
-  <a href="mailto:nicholas at metrix.on.ca">Nick Lewycky</a><br>
-  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2010-04-16 23:58:21 -0800 (Fri, 16 Apr 2010) $
-</address>
-</body>
-</html>

Removed: llvm/branches/AMDILBackend/docs/HowToAddABuilder.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/HowToAddABuilder.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/HowToAddABuilder.html (original)
+++ llvm/branches/AMDILBackend/docs/HowToAddABuilder.html (removed)
@@ -1,142 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-                      "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>
-    How To Add Your Build Configuration To LLVM Buildbot Infrastructure
-  </title>
-  <link rel="stylesheet" href="_static/llvm.css" type="text/css">
-</head>
-<body>
-
-<h1>How To Add Your Build Configuration To LLVM Buildbot Infrastructure</h1>
-<ol>
-  <li><a href="#introduction">Introduction</a></li>
-  <li><a href="#steps">Steps To Add Builder To LLVM Buildbot</a></li>
-</ol>
-<div class="doc_author">
-  <p>Written by <a href="mailto:gkistanova at gmail.com">Galina Kistanova</a></p>
-</div>
-
-<!-- *********************************************************************** -->
-<h2><a name="introduction">Introduction</a></h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>This document contains information about adding a build configuration and
-   buildslave to private slave builder to LLVM Buildbot Infrastructure
-   <a href="http://lab.llvm.org:8011">http://lab.llvm.org:8011</a></p>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2><a name="steps">Steps To Add Builder To LLVM Buildbot</a></h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>Volunteers can provide their build machines to work as build slaves to
-   public LLVM Buildbot.</p>
-
-<p>Here are the steps you can follow to do so:</p>
-
-<ol>
-  <li><p>Check the existing build configurations to make sure the one you are
-      interested in is not covered yet or gets built on your computer much
-      faster than on the existing one. We prefer faster builds so developers
-      will get feedback sooner after changes get committed.</p></li>
-
-  <li><p>The computer you will be registering with the LLVM buildbot
-      infrastructure should have all dependencies installed and you can
-      actually build your configuration successfully. Please check what degree
-      of parallelism (-j param) would give the fastest build.
-      You can build multiple configurations on one computer.</p></li>
-
-  <li><p>Install buildslave (currently we are using buildbot version 0.8.5).
-      Depending on the platform, buildslave could be available to download and
-      install with your packet manager, or you can download it directly from
-      <a href="http://trac.buildbot.net">http://trac.buildbot.net</a> and
-      install it manually.</p></li>
-
-  <li><p>Create a designated user account, your buildslave will be running
-      under, and set appropriate permissions.</p></li>
-
-  <li><p>Choose the buildslave root directory (all builds will be placed under
-      it), buildslave access name and password the build master will be using
-      to authenticate your buildslave.</p></li>
-
-  <li><p>Create a buildslave in context of that buildslave account.
-      Point it to the <b>lab.llvm.org</b> port <b>9990</b> (see
-      <a href="http://buildbot.net/buildbot/docs/current/full.html#creating-a-slave">
-      Buildbot documentation, Creating a slave</a>
-      for more details) by running the following command:</p>
-
-<div class="doc_code">
-<pre>
-$ buildslave create-slave <i>buildslave-root-directory</i> \
-             lab.llvm.org:9990 \
-             <i>buildslave-access-name buildslave-access-password</i>
-</pre>
-</div></li>
-
-  <li><p>Fill the buildslave description and admin name/e-mail.
-      Here is an example of the buildslave description:</p>
-
-<div class="doc_code">
-<pre>
-Windows 7 x64
-Core i7 (2.66GHz), 16GB of RAM
-
-g++.exe (TDM-1 mingw32) 4.4.0
-GNU Binutils 2.19.1
-cmake version 2.8.4
-Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
-</pre>
-</div></li>
-
-  <li><p>Make sure you can actually start the buildslave successfully. Then set
-      up your buildslave to start automatically at the start up time.
-      See the buildbot documentation for help.
-      You may want to restart your computer to see if it works.</p></li>
-
-  <li><p>Send a patch which adds your build slave and your builder to zorg.</p>
-      <ul>
-          <li>slaves are added to
-              <tt>buildbot/osuosl/master/config/slaves.py</tt></li>
-          <li>builders are added to
-              <tt>buildbot/osuosl/master/config/builders.py</tt></li>
-      </ul></li>
-
-  <li><p>Send the buildslave access name and the access password directly
-      to <a href="mailto:gkistanova at gmail.com">Galina Kistanova</a>, and wait
-      till she will let you know that your changes are applied and buildmaster
-      is reconfigured.</p>
-
-  <li><p>Check the status of your buildslave on the
-      <a href="http://lab.llvm.org:8011/waterfall">Waterfall Display</a>
-      to make sure it is connected, and
-      <a href="http://lab.llvm.org:8011/buildslaves/your-buildslave-name">
-      http://lab.llvm.org:8011/buildslaves/<your-buildslave-name></a>
-      to see if administrator contact and slave information are correct.</p>
-      </li>
-
-  <li><p>Wait for the first build to succeed and enjoy.</p></li>
-</ol>
-
-</div>
-
-<!-- *********************************************************************** -->
-<hr>
-<address>
-  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
-  <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
-  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
-  <br>
-  Last modified: $Date: 2011-10-31 12:50:0 -0700 (Mon, 31 Oct 2011) $
-</address>
-</body>
-</html>

Removed: llvm/branches/AMDILBackend/docs/HowToSubmitABug.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/HowToSubmitABug.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/HowToSubmitABug.html (original)
+++ llvm/branches/AMDILBackend/docs/HowToSubmitABug.html (removed)
@@ -1,345 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-                      "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-  <title>How to submit an LLVM bug report</title>
-  <link rel="stylesheet" href="_static/llvm.css" type="text/css">
-</head>
-<body>
-
-<h1>
-  How to submit an LLVM bug report
-</h1>
-
-<table class="layout" style="width: 90%" >
-<tr class="layout">
-  <td class="left">
-<ol>
-  <li><a href="#introduction">Introduction - Got bugs?</a></li>
-  <li><a href="#crashers">Crashing Bugs</a>
-    <ul>
-    <li><a href="#front-end">Front-end bugs</a>
-    <li><a href="#ct_optimizer">Compile-time optimization bugs</a>
-    <li><a href="#ct_codegen">Code generator bugs</a>
-    </ul></li>
-  <li><a href="#miscompilations">Miscompilations</a></li>
-  <li><a href="#codegen">Incorrect code generation (JIT and LLC)</a></li>
-</ol>
-<div class="doc_author">
-  <p>Written by <a href="mailto:sabre at nondot.org">Chris Lattner</a> and
-                <a href="http://misha.brukman.net">Misha Brukman</a></p>
-</div>
-</td>
-</tr>
-</table>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="introduction">Introduction - Got bugs?</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>If you're working with LLVM and run into a bug, we definitely want to know
-about it.  This document describes what you can do to increase the odds of
-getting it fixed quickly.</p>
-
-<p>Basically you have to do two things at a minimum.  First, decide whether the
-bug <a href="#crashers">crashes the compiler</a> (or an LLVM pass), or if the
-compiler is <a href="#miscompilations">miscompiling</a> the program (i.e., the
-compiler successfully produces an executable, but it doesn't run right).  Based
-on
-what type of bug it is, follow the instructions in the linked section to narrow
-down the bug so that the person who fixes it will be able to find the problem
-more easily.</p>
-
-<p>Once you have a reduced test-case, go to <a
-href="http://llvm.org/bugs/enter_bug.cgi">the LLVM Bug Tracking
-System</a> and fill out the form with the necessary details (note that you don't
-need to pick a category, just use the "new-bugs" category if you're not sure).
-The bug description should contain the following
-information:</p>
-
-<ul>
-  <li>All information necessary to reproduce the problem.</li>
-  <li>The reduced test-case that triggers the bug.</li>
-  <li>The location where you obtained LLVM (if not from our Subversion
-  repository).</li>
-</ul>
-
-<p>Thanks for helping us make LLVM better!</p>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="crashers">Crashing Bugs</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>More often than not, bugs in the compiler cause it to crash—often due
-to an assertion failure of some sort. The most important
-piece of the puzzle is to figure out if it is crashing in the GCC front-end
-or if it is one of the LLVM libraries (e.g. the optimizer or code generator)
-that has problems.</p>
-
-<p>To figure out which component is crashing (the front-end,
-optimizer or code generator), run the
-<tt><b>llvm-gcc</b></tt> command line as you were when the crash occurred, but
-with the following extra command line options:</p>
-
-<ul>
-  <li><tt><b>-O0 -emit-llvm</b></tt>: If <tt>llvm-gcc</tt> still crashes when
-  passed these options (which disable the optimizer and code generator), then
-  the crash is in the front-end.  Jump ahead to the section on <a
-  href="#front-end">front-end bugs</a>.</li>
-
-  <li><tt><b>-emit-llvm</b></tt>: If <tt>llvm-gcc</tt> crashes with this option
-  (which disables the code generator), you found an optimizer bug.  Jump ahead
-  to <a href="#ct_optimizer"> compile-time optimization bugs</a>.</li>
-
-  <li>Otherwise, you have a code generator crash.  Jump ahead to <a
-  href="#ct_codegen">code generator bugs</a>.</li>
-
-</ul>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="front-end">Front-end bugs</a>
-</h3>
-
-<div>
-
-<p>If the problem is in the front-end, you should re-run the same
-<tt>llvm-gcc</tt> command that resulted in the crash, but add the
-<tt>-save-temps</tt> option.  The compiler will crash again, but it will leave
-behind a <tt><i>foo</i>.i</tt> file (containing preprocessed C source code) and
-possibly <tt><i>foo</i>.s</tt> for each
-compiled <tt><i>foo</i>.c</tt> file. Send us the <tt><i>foo</i>.i</tt> file,
-along with the options you passed to llvm-gcc, and a brief description of the
-error it caused.</p>
-
-<p>The <a href="http://delta.tigris.org/">delta</a> tool helps to reduce the
-preprocessed file down to the smallest amount of code that still replicates the
-problem. You're encouraged to use delta to reduce the code to make the
-developers' lives easier. <a
-href="http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction">This website</a>
-has instructions on the best way to use delta.</p>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="ct_optimizer">Compile-time optimization bugs</a>
-</h3>
-
-<div>
-
-<p>If you find that a bug crashes in the optimizer, compile your test-case to a
-<tt>.bc</tt> file by passing "<tt><b>-emit-llvm -O0 -c -o foo.bc</b></tt>".
-Then run:</p>
-
-<div class="doc_code">
-<p><tt><b>opt</b> -std-compile-opts -debug-pass=Arguments foo.bc
-    -disable-output</tt></p>
-</div>
-
-<p>This command should do two things: it should print out a list of passes, and
-then it should crash in the same way as llvm-gcc.  If it doesn't crash, please
-follow the instructions for a <a href="#front-end">front-end bug</a>.</p>
-
-<p>If this does crash, then you should be able to debug this with the following
-bugpoint command:</p>
-
-<div class="doc_code">
-<p><tt><b>bugpoint</b> foo.bc <list of passes printed by 
-<b>opt</b>></tt></p>
-</div>
-
-<p>Please run this, then file a bug with the instructions and reduced .bc files
-that bugpoint emits.  If something goes wrong with bugpoint, please submit the
-"foo.bc" file and the list of passes printed by <b>opt</b>.</p>
-
-</div>
-
-<!-- ======================================================================= -->
-<h3>
-  <a name="ct_codegen">Code generator bugs</a>
-</h3>
-
-<div>
-
-<p>If you find a bug that crashes llvm-gcc in the code generator, compile your
-source file to a .bc file by passing "<tt><b>-emit-llvm -c -o foo.bc</b></tt>"
-to llvm-gcc (in addition to the options you already pass).  Once your have
-foo.bc, one of the following commands should fail:</p>
-
-<ol>
-<li><tt><b>llc</b> foo.bc</tt></li>
-<li><tt><b>llc</b> foo.bc -relocation-model=pic</tt></li>
-<li><tt><b>llc</b> foo.bc -relocation-model=static</tt></li>
-</ol>
-
-<p>If none of these crash, please follow the instructions for a
-<a href="#front-end">front-end bug</a>.  If one of these do crash, you should
-be able to reduce this with one of the following bugpoint command lines (use
-the one corresponding to the command above that failed):</p>
-
-<ol>
-<li><tt><b>bugpoint</b> -run-llc foo.bc</tt></li>
-<li><tt><b>bugpoint</b> -run-llc foo.bc --tool-args
-           -relocation-model=pic</tt></li>
-<li><tt><b>bugpoint</b> -run-llc foo.bc --tool-args
-           -relocation-model=static</tt></li>
-</ol>
-
-<p>Please run this, then file a bug with the instructions and reduced .bc file
-that bugpoint emits.  If something goes wrong with bugpoint, please submit the
-"foo.bc" file and the option that llc crashes with.</p>
-
-</div>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="miscompilations">Miscompilations</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>If llvm-gcc successfully produces an executable, but that executable doesn't
-run right, this is either a bug in the code or a bug in the
-compiler.  The first thing to check is to make sure it is not using undefined
-behavior (e.g. reading a variable before it is defined).  In particular, check
-to see if the program <a href="http://valgrind.org/">valgrind</a>s clean,
-passes purify, or some other memory checker tool.  Many of the "LLVM bugs" that
-we have chased down ended up being bugs in the program being compiled, not
- LLVM.</p>
-
-<p>Once you determine that the program itself is not buggy, you should choose 
-which code generator you wish to compile the program with (e.g. LLC or the JIT)
-and optionally a series of LLVM passes to run.  For example:</p>
-
-<div class="doc_code">
-<p><tt>
-<b>bugpoint</b> -run-llc [... optzn passes ...] file-to-test.bc --args -- [program arguments]</tt></p>
-</div>
-
-<p><tt>bugpoint</tt> will try to narrow down your list of passes to the one pass
-that causes an error, and simplify the bitcode file as much as it can to assist
-you. It will print a message letting you know how to reproduce the resulting
-error.</p>
-
-</div>
-
-<!-- *********************************************************************** -->
-<h2>
-  <a name="codegen">Incorrect code generation</a>
-</h2>
-<!-- *********************************************************************** -->
-
-<div>
-
-<p>Similarly to debugging incorrect compilation by mis-behaving passes, you can
-debug incorrect code generation by either LLC or the JIT, using
-<tt>bugpoint</tt>. The process <tt>bugpoint</tt> follows in this case is to try
-to narrow the code down to a function that is miscompiled by one or the other
-method, but since for correctness, the entire program must be run,
-<tt>bugpoint</tt> will compile the code it deems to not be affected with the C
-Backend, and then link in the shared object it generates.</p>
-
-<p>To debug the JIT:</p>
-
-<div class="doc_code">
-<pre>
-bugpoint -run-jit -output=[correct output file] [bitcode file]  \
-         --tool-args -- [arguments to pass to lli]              \
-         --args -- [program arguments]
-</pre>
-</div>
-
-<p>Similarly, to debug the LLC, one would run:</p>
-
-<div class="doc_code">
-<pre>
-bugpoint -run-llc -output=[correct output file] [bitcode file]  \
-         --tool-args -- [arguments to pass to llc]              \
-         --args -- [program arguments]
-</pre>
-</div>
-
-<p><b>Special note:</b> if you are debugging MultiSource or SPEC tests that
-already exist in the <tt>llvm/test</tt> hierarchy, there is an easier way to
-debug the JIT, LLC, and CBE, using the pre-written Makefile targets, which
-will pass the program options specified in the Makefiles:</p>
-
-<div class="doc_code">
-<p><tt>
-cd llvm/test/../../program<br>
-make bugpoint-jit
-</tt></p>
-</div>
-
-<p>At the end of a successful <tt>bugpoint</tt> run, you will be presented
-with two bitcode files: a <em>safe</em> file which can be compiled with the C
-backend and the <em>test</em> file which either LLC or the JIT
-mis-codegenerates, and thus causes the error.</p>
-
-<p>To reproduce the error that <tt>bugpoint</tt> found, it is sufficient to do
-the following:</p>
-
-<ol>
-
-<li><p>Regenerate the shared object from the safe bitcode file:</p>
-
-<div class="doc_code">
-<p><tt>
-<b>llc</b> -march=c safe.bc -o safe.c<br>
-<b>gcc</b> -shared safe.c -o safe.so
-</tt></p>
-</div></li>
-
-<li><p>If debugging LLC, compile test bitcode native and link with the shared
-    object:</p>
-
-<div class="doc_code">
-<p><tt>
-<b>llc</b> test.bc -o test.s<br>
-<b>gcc</b> test.s safe.so -o test.llc<br>
-./test.llc [program options]
-</tt></p>
-</div></li>
-    
-<li><p>If debugging the JIT, load the shared object and supply the test
-    bitcode:</p>
-
-<div class="doc_code">
-<p><tt><b>lli</b> -load=safe.so test.bc [program options]</tt></p>
-</div></li>  
-
-</ol>
-
-</div>
-
-<!-- *********************************************************************** -->
-<hr>
-<address>
-  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
-  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
-  <a href="http://validator.w3.org/check/referer"><img
-  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
-
-  <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
-  <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a>
-  <br>
-  Last modified: $Date$
-</address>
-
-</body>
-</html>

Modified: llvm/branches/AMDILBackend/docs/LangRef.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/LangRef.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/LangRef.html (original)
+++ llvm/branches/AMDILBackend/docs/LangRef.html Tue Jan 15 11:16:16 2013
@@ -25,7 +25,6 @@
           <li><a href="#linkage_private">'<tt>private</tt>' Linkage</a></li>
           <li><a href="#linkage_linker_private">'<tt>linker_private</tt>' Linkage</a></li>
           <li><a href="#linkage_linker_private_weak">'<tt>linker_private_weak</tt>' Linkage</a></li>
-          <li><a href="#linkage_linker_private_weak_def_auto">'<tt>linker_private_weak_def_auto</tt>' Linkage</a></li>
           <li><a href="#linkage_internal">'<tt>internal</tt>' Linkage</a></li>
           <li><a href="#linkage_available_externally">'<tt>available_externally</tt>' Linkage</a></li>
           <li><a href="#linkage_linkonce">'<tt>linkonce</tt>' Linkage</a></li>
@@ -34,6 +33,7 @@
           <li><a href="#linkage_appending">'<tt>appending</tt>' Linkage</a></li>
           <li><a href="#linkage_externweak">'<tt>extern_weak</tt>' Linkage</a></li>
           <li><a href="#linkage_linkonce_odr">'<tt>linkonce_odr</tt>' Linkage</a></li>
+          <li><a href="#linkage_linkonce_odr_auto_hide">'<tt>linkonce_odr_auto_hide</tt>' Linkage</a></li>
           <li><a href="#linkage_weak">'<tt>weak_odr</tt>' Linkage</a></li>
           <li><a href="#linkage_external">'<tt>external</tt>' Linkage</a></li>
           <li><a href="#linkage_dllimport">'<tt>dllimport</tt>' Linkage</a></li>
@@ -103,6 +103,7 @@
       <li><a href="#metadata">Metadata Nodes and Metadata Strings</a>
         <ol>
           <li><a href="#tbaa">'<tt>tbaa</tt>' Metadata</a></li>
+          <li><a href="#tbaa.struct">'<tt>tbaa.struct</tt>' Metadata</a></li>
           <li><a href="#fpmath">'<tt>fpmath</tt>' Metadata</a></li>
           <li><a href="#range">'<tt>range</tt>' Metadata</a></li>
         </ol>
@@ -576,15 +577,6 @@
       linker. The symbols are removed by the linker from the final linked image
       (executable or dynamic library).</dd>
 
-  <dt><tt><b><a name="linkage_linker_private_weak_def_auto">linker_private_weak_def_auto</a></b></tt></dt>
-  <dd>Similar to "<tt>linker_private_weak</tt>", but it's known that the address
-      of the object is not taken. For instance, functions that had an inline
-      definition, but the compiler decided not to inline it. Note,
-      unlike <tt>linker_private</tt> and <tt>linker_private_weak</tt>,
-      <tt>linker_private_weak_def_auto</tt> may have only <tt>default</tt>
-      visibility.  The symbols are removed by the linker from the final linked
-      image (executable or dynamic library).</dd>
-
   <dt><tt><b><a name="linkage_internal">internal</a></b></tt></dt>
   <dd>Similar to private, but the value shows as a local symbol
       (<tt>STB_LOCAL</tt> in the case of ELF) in the object file. This
@@ -653,6 +645,14 @@
       be merged with equivalent globals.  These linkage types are otherwise the
       same as their non-<tt>odr</tt> versions.</dd>
 
+  <dt><tt><b><a name="linkage_linkonce_odr_auto_hide">linkonce_odr_auto_hide</a></b></tt></dt>
+  <dd>Similar to "<tt>linkonce_odr</tt>", but nothing in the translation unit
+      takes the address of this definition. For instance, functions that had an
+      inline definition, but the compiler decided not to inline it.
+      <tt>linkonce_odr_auto_hide</tt> may have only <tt>default</tt> visibility.
+      The symbols are removed by the linker from the final linked image
+      (executable or dynamic library).</dd>
+
   <dt><tt><b><a name="linkage_external">external</a></b></tt></dt>
   <dd>If none of the above identifiers are used, the global is externally
       visible, meaning that it participates in linkage and can be used to
@@ -1107,9 +1107,9 @@
   <dd>This indicates that the pointer parameter specifies the address of a
       structure that is the return value of the function in the source program.
       This pointer must be guaranteed by the caller to be valid: loads and
-      stores to the structure may be assumed by the callee to not to trap.  This
-      may only be applied to the first parameter. This is not a valid attribute
-      for return values. </dd>
+      stores to the structure may be assumed by the callee to not to trap and
+      to be properly aligned.  This may only be applied to the first parameter.
+      This is not a valid attribute for return values. </dd>
 
   <dt><tt><b><a name="noalias">noalias</a></b></tt></dt>
   <dd>This indicates that pointer values
@@ -1208,13 +1208,6 @@
       may make calls to the function faster, at the cost of extra program
       startup time if the function is not called during program startup.</dd>
 
-  <dt><tt><b>ia_nsdialect</b></tt></dt>
-  <dd>This attribute indicates the associated inline assembly call is using a
-      non-standard assembly dialect.  The standard dialect is ATT, which is
-      assumed when this attribute is not present.  When present, the dialect
-      is assumed to be Intel.  Currently, ATT and Intel are the only supported
-      dialects.</dd>
-
   <dt><tt><b>inlinehint</b></tt></dt>
   <dd>This attribute indicates that the source code contained a hint that inlining
       this function is desirable (such as the "inline" keyword in C/C++).  It
@@ -1371,11 +1364,13 @@
       8-bits. If omitted, the natural stack alignment defaults to "unspecified",
       which does not prevent any alignment promotions.</dd>
 
-  <dt><tt>p:<i>size</i>:<i>abi</i>:<i>pref</i></tt></dt>
+  <dt><tt>p[n]:<i>size</i>:<i>abi</i>:<i>pref</i></tt></dt>
   <dd>This specifies the <i>size</i> of a pointer and its <i>abi</i> and
-      <i>preferred</i> alignments. All sizes are in bits. Specifying
-      the <i>pref</i> alignment is optional. If omitted, the
-      preceding <tt>:</tt> should be omitted too.</dd>
+      <i>preferred</i> alignments for address space <i>n</i>. All sizes are in
+      bits. Specifying the <i>pref</i> alignment is optional. If omitted, the
+      preceding <tt>:</tt> should be omitted too. The address space,
+      <i>n</i> is optional, and if not specified, denotes the default address
+      space 0. The value of <i>n</i> must be in the range [1,2^23).</dd>
 
   <dt><tt>i<i>size</i>:<i>abi</i>:<i>pref</i></tt></dt>
   <dd>This specifies the alignment for an integer type of a given bit
@@ -1416,6 +1411,10 @@
 <ul>
   <li><tt>E</tt> - big endian</li>
   <li><tt>p:64:64:64</tt> - 64-bit pointers with 64-bit alignment</li>
+  <li><tt>p1:32:32:32</tt> - 32-bit pointers with 32-bit alignment for
+  address space 1</li>
+  <li><tt>p2:16:32:32</tt> - 16-bit pointers with 32-bit alignment for
+  address space 2</li>
   <li><tt>i1:8:8</tt> - i1 is 8-bit (byte) aligned</li>
   <li><tt>i8:8:8</tt> - i8 is 8-bit (byte) aligned</li>
   <li><tt>i16:16:16</tt> - i16 is 16-bit aligned</li>
@@ -2111,7 +2110,7 @@
 <p>Structures may optionally be "packed" structures, which indicate that the 
   alignment of the struct is one byte, and that there is no padding between
   the elements.  In non-packed structs, padding between field types is inserted
-  as defined by the TargetData string in the module, which is required to match
+  as defined by the DataLayout string in the module, which is required to match
   what the underlying code generator expects.</p>
 
 <p>Structures can either be "literal" or "identified".  A literal structure is
@@ -2902,8 +2901,18 @@
 call void asm alignstack "eieio", ""()
 </pre>
 
-<p>If both keywords appear the '<tt>sideeffect</tt>' keyword must come
-   first.</p>
+<p>Inline asms also support using non-standard assembly dialects.  The assumed
+   dialect is ATT.  When the '<tt>inteldialect</tt>' keyword is present, the
+   inline asm is using the Intel dialect.  Currently, ATT and Intel are the
+   only supported dialects.  An example is:</p>
+
+<pre class="doc_code">
+call void asm inteldialect "eieio", ""()
+</pre>
+
+<p>If multiple keywords appear the '<tt>sideeffect</tt>' keyword must come
+   first, the '<tt>alignstack</tt>' keyword second and the
+   '<tt>inteldialect</tt>' keyword last.</p>
 
 <!--
 <p>TODO: The format of the asm and constraints string still need to be
@@ -3050,6 +3059,44 @@
 
 <!-- _______________________________________________________________________ -->
 <h4>
+  <a name="tbaa.struct">'<tt>tbaa.struct</tt>' Metadata</a>
+</h4>
+
+<div>
+
+<p>The <a href="#int_memcpy"><tt>llvm.memcpy</tt></a> is often used to implement
+aggregate assignment operations in C and similar languages, however it is
+defined to copy a contiguous region of memory, which is more than strictly
+necessary for aggregate types which contain holes due to padding. Also, it
+doesn't contain any TBAA information about the fields of the aggregate.</p>
+
+<p><tt>!tbaa.struct</tt> metadata can describe which memory subregions in a memcpy
+are padding and what the TBAA tags of the struct are.</p>
+
+<p>The current metadata format is very simple. <tt>!tbaa.struct</tt> metadata nodes
+   are a list of operands which are in conceptual groups of three. For each
+   group of three, the first operand gives the byte offset of a field in bytes,
+   the second gives its size in bytes, and the third gives its
+   tbaa tag. e.g.:</p>
+
+<div class="doc_code">
+<pre>
+!4 = metadata !{ i64 0, i64 4, metadata !1, i64 8, i64 4, metadata !2 }
+</pre>
+</div>
+
+<p>This describes a struct with two fields. The first is at offset 0 bytes
+   with size 4 bytes, and has tbaa tag !1. The second is at offset 8 bytes
+   and has size 4 bytes and has tbaa tag !2.</p>
+
+<p>Note that the fields need not be contiguous. In this example, there is a
+   4 byte gap between the two fields. This gap represents padding which
+   does not carry useful data and need not be preserved.</p>
+
+</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
   <a name="fpmath">'<tt>fpmath</tt>' Metadata</a>
 </h4>
  
@@ -5013,7 +5060,7 @@
 
 <p>The optional constant <tt>align</tt> argument specifies the alignment of the
    operation (that is, the alignment of the memory address). A value of 0 or an
-   omitted <tt>align</tt> argument means that the operation has the preferential
+   omitted <tt>align</tt> argument means that the operation has the abi
    alignment for the target. It is the responsibility of the code emitter to
    ensure that the alignment information is correct. Overestimating the
    alignment results in undefined behavior. Underestimating the alignment may
@@ -5094,7 +5141,7 @@
 
 <p>The optional constant "align" argument specifies the alignment of the
    operation (that is, the alignment of the memory address). A value of 0 or an
-   omitted "align" argument means that the operation has the preferential
+   omitted "align" argument means that the operation has the abi
    alignment for the target. It is the responsibility of the code emitter to
    ensure that the alignment information is correct. Overestimating the
    alignment results in an undefined behavior. Underestimating the alignment may

Modified: llvm/branches/AMDILBackend/docs/Lexicon.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/Lexicon.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/Lexicon.rst (original)
+++ llvm/branches/AMDILBackend/docs/Lexicon.rst Tue Jan 15 11:16:16 2013
@@ -20,8 +20,10 @@
 B
 -
 
-**BURS**
+**BB Vectorization**
+    Basic Block Vectorization
 
+**BURS**
     Bottom Up Rewriting System --- A method of instruction selection for code
     generation.  An example is the `BURG
     <http://www.program-transformation.org/Transform/BURG>`_ tool.
@@ -156,7 +158,7 @@
     In garbage collection, a pointer variable lying outside of the `heap`_ from
     which the collector begins its reachability analysis. In the context of code
     generation, "root" almost always refers to a "stack root" --- a local or
-    temporary variable within an executing function.</dd>
+    temporary variable within an executing function.
 
 **RPO**
     Reverse postorder
@@ -192,3 +194,10 @@
 **Stack Map**
     In garbage collection, metadata emitted by the code generator which
     identifies `roots`_ within the stack frame of an executing function.
+
+T
+-
+
+**TBAA**
+    Type-Based Alias Analysis
+

Modified: llvm/branches/AMDILBackend/docs/LinkTimeOptimization.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/LinkTimeOptimization.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/LinkTimeOptimization.rst (original)
+++ llvm/branches/AMDILBackend/docs/LinkTimeOptimization.rst Tue Jan 15 11:16:16 2013
@@ -29,6 +29,8 @@
 helps to do optimizations that are not possible in other models. The linker
 input allows the optimizer to avoid relying on conservative escape analysis.
 
+.. _libLTO-example:
+
 Example of link time optimization
 ---------------------------------
 

Modified: llvm/branches/AMDILBackend/docs/Makefile.sphinx
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/Makefile.sphinx?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/Makefile.sphinx (original)
+++ llvm/branches/AMDILBackend/docs/Makefile.sphinx Tue Jan 15 11:16:16 2013
@@ -46,6 +46,10 @@
 html:
 	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
 	@echo
+	@# FIXME: Remove this `cp` once HTML->Sphinx transition is completed.
+	@# Kind of a hack, but HTML-formatted docs are on the way out anyway.
+	@echo "Copying legacy HTML-formatted docs into $(BUILDDIR)/html"
+	@cp -a *.html tutorial $(BUILDDIR)/html
 	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
 
 dirhtml:

Modified: llvm/branches/AMDILBackend/docs/Passes.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/Passes.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/Passes.html (original)
+++ llvm/branches/AMDILBackend/docs/Passes.html Tue Jan 15 11:16:16 2013
@@ -77,6 +77,7 @@
 <tr><td><a href="#basicaa">-basicaa</a></td><td>Basic Alias Analysis (stateless AA impl)</td></tr>
 <tr><td><a href="#basiccg">-basiccg</a></td><td>Basic CallGraph Construction</td></tr>
 <tr><td><a href="#count-aa">-count-aa</a></td><td>Count Alias Analysis Query Responses</td></tr>
+<tr><td><a href="#da">-da</a></td><td>Dependence Analysis</td></tr>
 <tr><td><a href="#debug-aa">-debug-aa</a></td><td>AA use debugger</td></tr>
 <tr><td><a href="#domfrontier">-domfrontier</a></td><td>Dominance Frontier Construction</td></tr>
 <tr><td><a href="#domtree">-domtree</a></td><td>Dominator Tree Construction</td></tr>
@@ -92,7 +93,6 @@
 <tr><td><a href="#intervals">-intervals</a></td><td>Interval Partition Construction</td></tr>
 <tr><td><a href="#iv-users">-iv-users</a></td><td>Induction Variable Users</td></tr>
 <tr><td><a href="#lazy-value-info">-lazy-value-info</a></td><td>Lazy Value Information Analysis</td></tr>
-<tr><td><a href="#lda">-lda</a></td><td>Loop Dependence Analysis</td></tr>
 <tr><td><a href="#libcall-aa">-libcall-aa</a></td><td>LibCall Alias Analysis</td></tr>
 <tr><td><a href="#lint">-lint</a></td><td>Statically lint-checks LLVM IR</td></tr>
 <tr><td><a href="#loops">-loops</a></td><td>Natural Loop Information</td></tr>
@@ -182,7 +182,6 @@
 <tr><td><a href="#strip-debug-declare">-strip-debug-declare</a></td><td>Strip all llvm.dbg.declare intrinsics</td></tr>
 <tr><td><a href="#strip-nondebug">-strip-nondebug</a></td><td>Strip all symbols, except dbg symbols, from a module</td></tr>
 <tr><td><a href="#tailcallelim">-tailcallelim</a></td><td>Tail Call Elimination</td></tr>
-<tr><td><a href="#tailduplicate">-tailduplicate</a></td><td>Tail Duplication</td></tr>
 
 
 <tr><th colspan="2"><b>UTILITY PASSES</b></th></tr>
@@ -251,6 +250,15 @@
 
 <!-------------------------------------------------------------------------- -->
 <h3>
+  <a name="da">-da: Dependence Analysis</a>
+</h3>
+<div>
+  <p>Dependence analysis framework, which is used to detect dependences in
+  memory accesses.</p>
+</div>
+
+<!-------------------------------------------------------------------------- -->
+<h3>
   <a name="debug-aa">-debug-aa: AA use debugger</a>
 </h3>
 <div>
@@ -433,15 +441,6 @@
 
 <!-------------------------------------------------------------------------- -->
 <h3>
-  <a name="lda">-lda: Loop Dependence Analysis</a>
-</h3>
-<div>
-  <p>Loop dependence analysis framework, which is used to detect dependences in
-  memory accesses in loops.</p>
-</div>
-
-<!-------------------------------------------------------------------------- -->
-<h3>
   <a name="libcall-aa">-libcall-aa: LibCall Alias Analysis</a>
 </h3>
 <div>
@@ -1862,22 +1861,6 @@
   </ul>
 </div>
 
-<!-------------------------------------------------------------------------- -->
-<h3>
-  <a name="tailduplicate">-tailduplicate: Tail Duplication</a>
-</h3>
-<div>
-  <p>
-  This pass performs a limited form of tail duplication, intended to simplify
-  CFGs by removing some unconditional branches.  This pass is necessary to
-  straighten out loops created by the C front-end, but also is capable of
-  making other code nicer.  After this pass is run, the CFG simplify pass
-  should be run to clean up the mess.
-  </p>
-</div>
-
-</div>
-
 <!-- ======================================================================= -->
 <h2><a name="utilities">Utility Passes</a></h2>
 <div>

Modified: llvm/branches/AMDILBackend/docs/ProgrammersManual.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/ProgrammersManual.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/ProgrammersManual.html (original)
+++ llvm/branches/AMDILBackend/docs/ProgrammersManual.html Tue Jan 15 11:16:16 2013
@@ -98,6 +98,7 @@
       <li><a href="#dss_valuemap">"llvm/ADT/ValueMap.h"</a></li>
       <li><a href="#dss_intervalmap">"llvm/ADT/IntervalMap.h"</a></li>
       <li><a href="#dss_map"><map></a></li>
+      <li><a href="#dss_mapvector">"llvm/ADT/MapVector.h"</a></li>
       <li><a href="#dss_inteqclasses">"llvm/ADT/IntEqClasses.h"</a></li>
       <li><a href="#dss_immutablemap">"llvm/ADT/ImmutableMap.h"</a></li>
       <li><a href="#dss_othermap">Other Map-Like Container Options</a></li>
@@ -432,10 +433,10 @@
 </dl>
 
 <p>These five templates can be used with any classes, whether they have a
-v-table or not.  To add support for these templates, you simply need to add
-<tt>classof</tt> static methods to the class you are interested casting
-to. Describing this is currently outside the scope of this document, but there
-are lots of examples in the LLVM source base.</p>
+v-table or not. If you want to add support for these templates, see the
+document <a href="HowToSetUpLLVMStyleRTTI.html">How to set up LLVM-style
+RTTI for your class hierarchy </a>.
+</p>
 
 </div>
 
@@ -1848,6 +1849,24 @@
 
 </div>
 
+
+<!-- _______________________________________________________________________ -->
+<h4>
+  <a name="dss_mapvector">"llvm/ADT/MapVector.h"</a>
+</h4>
+<div>
+
+<p> MapVector<KeyT,ValueT&gt provides a subset of the DenseMap interface.
+  The main difference is that the iteration order is guaranteed to be
+  the insertion order, making it an easy (but somewhat expensive) solution
+  for non-deterministic iteration over maps of pointers. </p>
+
+<p> It is implemented by mapping from key to an index in a vector of key,value
+  pairs. This provides fast lookup and iteration, but has two main drawbacks:
+  The key is stored twice and it doesn't support removing elements. </p>
+
+</div>
+
 <!-- _______________________________________________________________________ -->
 <h4>
   <a name="dss_inteqclasses">"llvm/ADT/IntEqClasses.h"</a>

Modified: llvm/branches/AMDILBackend/docs/README.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/README.txt?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/README.txt (original)
+++ llvm/branches/AMDILBackend/docs/README.txt Tue Jan 15 11:16:16 2013
@@ -6,7 +6,7 @@
   * Plain HTML documentation.
 
   * reStructured Text documentation using the Sphinx documentation generator. It
-    is currently tested with Sphinx 1.1.3.
+    is currently tested with Sphinx 1.1.3. 
 
     For more information, see the "Sphinx Introduction for LLVM Developers"
     document.

Modified: llvm/branches/AMDILBackend/docs/ReleaseNotes.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/ReleaseNotes.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/ReleaseNotes.html (original)
+++ llvm/branches/AMDILBackend/docs/ReleaseNotes.html Tue Jan 15 11:16:16 2013
@@ -29,12 +29,6 @@
   <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
 </div>
 
-<h1 style="color:red">These are in-progress notes for the upcoming LLVM 3.2
-release.<br>
-You may prefer the
-<a href="http://llvm.org/releases/3.1/docs/ReleaseNotes.html">LLVM 3.1
-Release Notes</a>.</h1>
-
 <!-- *********************************************************************** -->
 <h2>
   <a name="intro">Introduction</a>
@@ -46,7 +40,7 @@
 <p>This document contains the release notes for the LLVM Compiler
    Infrastructure, release 3.2.  Here we describe the status of LLVM, including
    major improvements from the previous release, improvements in various
-   subprojects of LLVM, and some of the current users of the code.  All LLVM
+   sub-projects of LLVM, and some of the current users of the code.  All LLVM
    releases may be downloaded from the <a href="http://llvm.org/releases/">LLVM
    releases web site</a>.</p>
 
@@ -72,11 +66,12 @@
 
 <div>
 
-<p>The LLVM 3.2 distribution currently consists of code from the core LLVM
-   repository, which roughly includes the LLVM optimizers, code generators and
-   supporting tools, and the Clang repository. In addition to this code, the
-   LLVM Project includes other sub-projects that are in development. Here we
-   include updates on these subprojects.</p>
+<p>The LLVM 3.2 distribution currently consists of production-quality code
+   from the core LLVM repository, which roughly includes the LLVM optimizers,
+   code generators and supporting tools, as well as Clang, DragonEgg and 
+   compiler-rt sub-project repositories. In addition to this code, the LLVM 
+   Project includes other sub-projects that are in development. Here we 
+   include updates on these sub-projects.</p>
 
 <!--=========================================================================-->
 <h3>
@@ -90,18 +85,18 @@
    experience through expressive diagnostics, a high level of conformance to
    language standards, fast compilation, and low memory use. Like LLVM, Clang
    provides a modular, library-based architecture that makes it suitable for
-   creating or integrating with other development tools. Clang is considered a
-   production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86
-   (32- and 64-bit), and for Darwin/ARM targets.</p>
+   creating or integrating with other development tools.</p>
 
 <p>In the LLVM 3.2 time-frame, the Clang team has made many improvements.
    Highlights include:</p>
 <ul>
-  <li>...</li>
+  <li>Improvements to Clang's diagnostics</li>
+  <li>Support for tls_model attribute</li>
+  <li>Type safety attributes</li>
 </ul>
 
 <p>For more details about the changes to Clang since the 3.1 release, see the
-   <a href="http://clang.llvm.org/docs/ReleaseNotes.html">Clang release
+   <a href="http://llvm.org/releases/3.2/tools/clang/docs/ReleaseNotes.html">Clang 3.2 release
    notes.</a></p>
 
 <p>If Clang rejects your code but another compiler accepts it, please take a
@@ -129,7 +124,10 @@
 <p>The 3.2 release has the following notable changes:</p>
 
 <ul>
-  <li>...</li>
+ <li>Able to load LLVM plugins such as Polly.</li>
+ <li>Supports thread-local storage models.</li>
+ <li>Passes knowledge of variable lifetimes to the LLVM optimizers.</li>
+ <li>No longer requires GCC to be built with LTO support.</li>
 </ul>
 
 </div>
@@ -141,7 +139,8 @@
 
 <div>
 
-<p>The new LLVM <a href="http://compiler-rt.llvm.org/">compiler-rt project</a>
+
+<p>The LLVM <a href="http://compiler-rt.llvm.org/">compiler-rt project</a>
    is a simple library that provides an implementation of the low-level
    target-specific hooks required by code generation and other runtime
    components.  For example, when compiling for a 32-bit target, converting a
@@ -153,7 +152,11 @@
 <p>The 3.2 release has the following notable changes:</p>
 
 <ul>
-  <li>...</li>
+  <li><a href="http://llvm.org/releases/3.2/tools/clang/docs/ThreadSanitizer.html">ThreadSanitizer (TSan)</a> - data race detector run-time library for C/C++ has been added.</li>
+  <li>Improvements to <a href="http://llvm.org/releases/3.2/tools/clang/docs/AddressSanitizer.html">AddressSanitizer</a> including: better portability 
+  (OSX, Android NDK), support for cmake based builds, enhanced error reporting and lots of bug fixes.</li>
+  <li>Added support for A6 'Swift' CPU.</li>
+  <li><code>divsi3</code> function has been enhanced to take advantage of a hardware unsigned divide when it is available.</li>
 </ul>
 
 </div>
@@ -174,7 +177,9 @@
 <p>The 3.2 release has the following notable changes:</p>
 
 <ul>
-  <li>...</li>
+  <li>Linux build fixes for clang (see <a href="http://lldb.llvm.org/build.html">Building LLDB</a>)</li>
+  <li>Some Linux stability and usability improvements</li>
+  <li>Switch expression evaluation to use MCJIT (from legacy JIT) on Linux</li>
 </ul>
 
 </div>
@@ -193,7 +198,15 @@
 <p>Within the LLVM 3.2 time-frame there were the following highlights:</p>
 
 <ul>
-  <li>...</li>
+  <li> C++11 shared_ptr atomic access API (20.7.2.5) has been implemented.</li>
+  <li>Applied noexcept and constexpr throughout library.</li>
+  <li>Improved C++11 conformance in associative container emplace.</li>
+  <li>Performance improvements in: std::rotate algorithm and I/O.</li>
+  <li>Operator new/delete and type_infos for exception types moved from libc++ to libc++abi.</li>
+  <li>Bug fixes in: <code><atomic></code>; vector<code><bool></code> algorithms,
+    <code><future></code>,<code><tuple></code>,
+    <code><type_traits></code>,<code><fstream></code>,<code><istream></code>,
+    <code><iterator></code>, <code><condition_variable></code>,<code><complex></code> as well as visibility fixes.
 </ul>
 
 </div>
@@ -212,7 +225,7 @@
 <p>The 3.2 release has the following notable changes:</p>
 
 <ul>
-  <li>...</li>
+  <li>Bug fixes only, no functional changes.</li>
 </ul>
 
 </div>
@@ -227,16 +240,61 @@
 
 <p><a href="http://polly.llvm.org/">Polly</a> is an <em>experimental</em>
   optimizer for data locality and parallelism. It currently provides high-level
-  loop optimizations and automatic parallelisation (using the OpenMP run time).
+  loop optimizations and automatic parallelization (using the OpenMP run time).
   Work in the area of automatic SIMD and accelerator code generation was
   started.</p>
 
 <p>Within the LLVM 3.2 time-frame there were the following highlights:</p>
 
 <ul>
-  <li>...</li>
+  <li>isl, the integer set library used by Polly, was relicensed under the MIT license.</li>
+  <li>isl based code generation.</li>
+  <li>MIT licensed replacement for CLooG (LGPLv2).</li>
+  <li>Fine grained option handling (separation of core and border computations, control overhead vs. code size).</li>
+  <li>Support for FORTRAN and Dragonegg.</li>
+  <li>OpenMP code generation fixes.</li>
+</ul>
+
+</div>
+
+<!--=========================================================================-->
+<h3>
+<a name="StaticAnalyzer">Clang Static Analyzer</a>
+</h3>
+
+<div>
+
+<p>The <a href="http://clang-analyzer.llvm.org/">Clang Static Analyzer</a> 
+    is an advanced source code analysis tool integrated into Clang that performs
+    a deep analysis of code to find potential bugs.</p>
+    
+<p>In the LLVM 3.2 release, the static analyzer has made significant improvements
+    in many areas, with notable highlights such as:</p>
+    
+<ul>
+    <li>Improved interprocedural analysis within a translation unit (see details below), which greatly amplified the analyzer's ability to find bugs.</li>
+    <li>New infrastructure to model "well-known" APIs, allowing the analyzer to do a much better job when modeling calls to such functions.</li>
+    <li>Significant improvements to the APIs to write static analyzer checkers, with a more unified way of representing function/method calls in the checker API.  Details can be found in the <a href="http://llvm.org/devmtg/2012-11#talk13">Building a Checker in 24 hours</a> talk.
+</ul>
+
+<p>The release specifically includes notable improvements for Objective-C analysis, including:</p>
+
+<ul>
+    <li>Interprocedural analysis for Objective-C methods.</li>
+    <li>Interprocedural analysis of calls to "blocks".</li>
+    <li>Precise modeling of GCD APIs such as <tt>dispatch_once</tt> and friends.</li>
+    <li>Improved support for recently added Objective-C constructs such as array and dictionary literals.</li>
 </ul>
 
+<p>The release specifically includes notable improvements for C++ analysis, including:</p>
+
+<ul>
+    <li>Interprocedural analysis for C++ methods (within a translation unit).</li>
+    <li>More precise modeling of C++ initializers and destructors.</li>
+</ul>
+
+<p>Finally, this release includes many small improvements to <tt>scan-build</tt>, which can be used to drive the analyzer from the command line or a continuous integration system.  This includes a directory-traversal issue, which could cause potential security problems in some cases.  We would like to acknowledge Tim Brown of Portcullis Computer Security Ltd for reporting this issue.</p>
+    
 </div>
 
 </div>
@@ -265,6 +323,19 @@
 
 </div>
 
+<h3>EmbToolkit</h3>
+
+<div>
+
+<p><a href="http://www.embtoolkit.org/">EmbToolkit</a> provides Linux cross-compiler 
+    toolchain/SDK (GCC/binutils/C library (uclibc,eglibc,musl)), a build system for 
+    package cross-compilation and optionally various root file systems. 
+    It supports ARM and MIPS. There is an ongoing effort to provide a clang+llvm 
+    environment for the 3.2 releases, 
+</p>
+
+</div>
+
 <h3>FAUST</h3>
 
 <div>
@@ -274,7 +345,7 @@
    AUdio STream. Its programming model combines two approaches: functional
    programming and block diagram composition. In addition with the C, C++, Java,
    JavaScript output formats, the Faust compiler can generate LLVM bitcode, and
-   works with LLVM 2.7-3.1.</p>
+   works with LLVM 2.7-3.2.</p>
 
 </div>
 
@@ -331,7 +402,11 @@
 
 <p>OSL was developed by Sony Pictures Imageworks for use in its in-house
    renderer used for feature film animation and visual effects, and is
-   distributed as open source software with the "New BSD" license.</p>
+   distributed as open source software with the "New BSD" license.
+   It has been used for all the shading on such films as The Amazing Spider-Man,
+   Men in Black III, Hotel Transylvania, and may other films in-progress, 
+   and also has been incorporated into several commercial and open source 
+   rendering products such as Blender, VRay, and Autodesk Beast.</p>
 
 </div>
 
@@ -367,7 +442,7 @@
    C++, Fortran and Faust code in Pure programs if the corresponding
    LLVM-enabled compilers are installed).</p>
 
-<p>Pure version 0.54 has been tested and is known to work with LLVM 3.1 (and
+<p>Pure version 0.56 has been tested and is known to work with LLVM 3.2 (and
    continues to work with older LLVM releases >= 2.5).</p>
 
 </div>
@@ -432,7 +507,9 @@
 <p>LLVM 3.2 includes several major changes and big features:</p>
 
 <ul>
-  <li>...</li>
+  <li>Loop Vectorizer.</li>
+  <li>New implementation of SROA.</li>
+  <li>New NVPTX back-end (replacing existing PTX back-end) based on NVIDIA sources.</li>
 </ul>
 
 </div>
@@ -451,7 +528,10 @@
 <ul>
   <li>Thread local variables may have a specified TLS model. See the
   <a href="LangRef.html#globalvars">Language Reference Manual</a>.</li>
-  <li>...</li>
+  <li>'TYPE_CODE_FUNCTION_OLD' type code and autoupgrade code for old function attributes format has been removed.</li>
+  <li>Internal representation of the Attributes class has been converted into a pointer to an
+         opaque object that's uniqued by and stored in the LLVMContext object. 
+         The Attributes class then becomes a thin wrapper around this opaque object.</li>
 </ul>
 
 </div>
@@ -466,8 +546,56 @@
 <p>In addition to many minor performance tweaks and bug fixes, this release
    includes a few major enhancements and additions to the optimizers:</p>
 
+<p> Loop Vectorizer - We've added a loop vectorizer and we are now able to
+    vectorize small loops. The loop vectorizer is disabled by default and
+    can be enabled using the <b>-mllvm -vectorize-loops</b> flag.
+    The SIMD vector width can be specified using the flag
+    <b>-mllvm -force-vector-width=4</b>.
+    The default value is <b>0</b> which means auto-select.
+    <br/>
+    We can now vectorize this function:
+
+    <pre class="doc_code">
+    unsigned sum_arrays(int *A, int *B, int start, int end) {
+      unsigned sum = 0;
+      for (int i = start; i < end; ++i)
+        sum += A[i] + B[i] + i;
+
+      return sum;
+    }
+    </pre>
+
+    We vectorize under the following loops:
+    <ul>
+    <li>The inner most loops must have a single basic block.</li>
+    <li>The number of iterations are known before the loop starts to execute.</li>
+    <li>The loop counter needs to be incremented by one.</li>
+    <li>The loop trip count <b>can</b> be a variable.</li>
+    <li>Loops do <b>not</b> need to start at zero.</li>
+    <li>The induction variable can be used inside the loop.</li>
+    <li>Loop reductions are supported.</li>
+    <li>Arrays with affine access pattern do <b>not</b> need to be marked as 'noalias' and are checked at runtime.</li>
+    </ul>
+
+</p>
+
+<p>SROA - We’ve re-written SROA to be significantly more powerful and generate
+code which is much more friendly to the rest of the optimization pipeline.
+Previously this pass had scaling problems that required it to only operate on
+relatively small aggregates, and at times it would mistakenly replace a large
+aggregate with a single very large integer in order to make it a scalar SSA
+value. The result was a large number of i1024 and i2048 values representing any
+small stack buffer. These in turn slowed down many subsequent optimization
+paths.</p>
+<p>The new SROA pass uses a different algorithm that allows it to only promote to
+scalars the pieces of the aggregate actively in use. Because of this it doesn’t
+require any thresholds. It also always deduces the scalar values from the uses
+of the aggregate rather than the specific LLVM type of the aggregate. These
+features combine to both optimize more code with the pass but to improve the
+compile time of many functions dramatically.</p>
+
 <ul>
-  <li>...</li>
+  <li>Branch weight metadata is preserved through more of the optimizer.</li>
 </ul>
 
 </div>
@@ -486,8 +614,19 @@
    <a href="http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html">Intro
    to the LLVM MC Project Blog Post</a>.</p>
 
-<ul>
-  <li>...</li>
+<ul>    
+  <li> Added support for following assembler directives: <code>.ifb</code>, <code>.ifnb</code>, <code>.ifc</code>, 
+          <code>.ifnc</code>, <code>.purgem</code>, <code>.rept</code> and <code>.version</code> (ELF) as well as Darwin specific
+	<code>.pushsection</code>, <code>.popsection</code> and  <code>.previous</code> .</li>
+  <li>Enhanced handling of <code>.lcomm directive</code>.</li>
+  <li>MS style inline assembler: added implementation of the offset and TYPE operators.</li>
+  <li>Targets can specify minimum supported NOP size for NOP padding.</li>
+  <li>ELF improvements: added support for generating ELF objects on Windows.</li>
+  <li>MachO improvements:  symbol-difference variables are marked as N_ABS, added direct-to-object attribute for data-in-code markers.</li>
+  <li>Added support for annotated disassembly output for x86 and arm targets.</li>
+  <li>Arm support has been improved by adding support for ARM TARGET2 relocation
+          and fixing hadling of ARM-style "$d.*" labels.</li>
+   <li>Implemented local-exec TLS on PowerPC.</li>
 </ul>
 
 </div>
@@ -499,22 +638,19 @@
 
 <div>
 
-<p>We have changed the way that the Type Legalizer legalizes vectors. The type
-   legalizer now attempts to promote integer elements.  This enabled the
-   implementation of vector-select.  Additionally, we see a performance boost on
-   workloads which use vectors of chars and shorts, since they are now promoted
-   to 32-bit types, which are better supported by the SIMD instruction set.
-   Floating point types are still widened as before.</p>
+<p>Stack Coloring - We have implemented a new optimization pass
+  to merge stack objects which are used in disjoin areas of the code.
+  This optimization reduces the required stack space significantly, in cases
+  where it is clear to the optimizer that the stack slot is not shared.
+  We use the lifetime markers to tell the codegen that a certain alloca
+  is used within a region.</p>
 
+<p> We now merge consecutive loads and stores. </p>
 
 <p>We have put a significant amount of work into the code generator
    infrastructure, which allows us to implement more aggressive algorithms and
    make it run faster:</p>
 
-<ul>
-  <li>...</li>
-</ul>
-
 <p> We added new TableGen infrastructure to support bundling for
     Very Long Instruction Word (VLIW) architectures. TableGen can now
     automatically generate a deterministic finite automaton from a VLIW
@@ -524,6 +660,13 @@
 <p> We have added a new target independent VLIW packetizer based on the
     DFA infrastructure to group machine instructions into bundles.</p>
 
+<p> We have added new TableGen infrastructure to support relationship maps
+    between instructions. This feature enables TableGen to automatically
+    construct a set of relation tables and query functions that can be used
+    to switch between various forms of instructions. For more information,
+    please refer to <a href="http://llvm.org/docs/HowToUseInstrMappings.html">
+    How To Use Instruction Mappings</a>.</p> 
+
 </div>
 
 <h4>
@@ -549,7 +692,7 @@
 <p>New features and major changes in the X86 target include:</p>
 
 <ul>
-  <li>...</li>
+  <li>Small codegen optimizations, especially for AVX2.</li>
 </ul>
 
 </div>
@@ -564,7 +707,7 @@
 <p>New features of the ARM target include:</p>
 
 <ul>
-  <li>...</li>
+  <li>Support and performance tuning for the A6 'Swift' CPU.</li>
 </ul>
 
 <!--_________________________________________________________________________-->
@@ -581,7 +724,7 @@
    platform specific support for Linux.</p>
 
 <p>Full support is included for Thumb1, Thumb2 and ARM modes, along with
-   subtarget and CPU specific extensions for VFP2, VFP3 and NEON.</p>
+   sub-target and CPU specific extensions for VFP2, VFP3 and NEON.</p>
 
 <p>The assembler is Unified Syntax only (see ARM Architecural Reference Manual
    for details). While there is some, and growing, support for pre-unfied
@@ -601,91 +744,167 @@
 <p>New features and major changes in the MIPS target include:</p>
 
 <ul>
-  <li>...</li>
+  <li>Integrated assembler support: 
+         MIPS32 works for both PIC and static, known limitation is the PR14456 where 
+         R_MIPS_GPREL16 relocation is generated with the wrong addend.
+         MIPS64 support is incomplete, for example exception handling is not working.</li>
+   <li>Support for fast calling convention has been added.</li>
+   <li>Support for Android MIPS toolchain has been added to clang driver.</li>
+   <li>Added clang driver support for MIPS N32 ABI through "-mabi=n32" option.</li>
+   <li>MIPS32 and MIPS64 disassembler has been implemented.</li>
+   <li>Support for compiling programs with large GOTs (exceeding 64kB in size) has been added 
+	through llc option "-mxgot".</li>
+  <li>Added experimental support for MIPS32 DSP intrinsics.</li>
+  <li>Experimental support for MIPS16 with following limitations: only soft float is supported,
+         C++ exceptions are not supported, large stack frames (> 32000 bytes) are not supported,
+         direct object code emission is not supported only .s .</li>
+  <li>Standalone assembler (llvm-mc):  implementation is in progress and considered experimental.</li>
+  <li>All classic JIT and MCJIT tests pass on Little and Big Endian MIPS32 platforms.</li>
+  <li>Inline asm support: all common constraints and operand modifiers have been implemented.</li>
+  <li>Added tail call optimization support, use llc option "-enable-mips-tail-calls"
+      or clang options "-mllvm -enable-mips-tail-calls"to enable it.</li>
+  <li>Improved register allocation by removing registers $fp, $gp, $ra and $at from the list of reserved registers.</li>
+  <li>Long branch expansion pass has been implemented, which expands branch
+      instructions with offsets that do not fit in the 16-bit field.</li>
+  <li>Cavium Octeon II board is used for testing builds (llvm-mips-linux builder).</li>
 </ul>
 
 </div>
 
 <!--=========================================================================-->
 <h3>
-<a name="OtherTS">Other Target Specific Improvements</a>
+<a name="PowerPC">PowerPC Target Improvements</a>
 </h3>
 
 <div>
 
+<p>Many fixes and changes across LLVM (and Clang) for better compliance with
+   the 64-bit PowerPC ELF Application Binary Interface, interoperability with
+   GCC, and overall 64-bit PowerPC support.   Some highlights include:</p>
 <ul>
-  <li>...</li>
+  <li>  MCJIT support added.</li>
+  <li>  PPC64 relocation support and (small code model) TOC handling
+        added.</li>
+  <li>  Parameter passing and return value fixes (alignment issues,
+        padding, varargs support, proper register usage, odd-sized
+        structure support, float support, extension of return values
+        for i32 return values).</li>
+  <li>  Fixes in spill and reload code for vector registers.</li>
+  <li>  C++ exception handling enabled.</li>
+  <li>  Changes to remediate double-rounding compatibility issues with
+        respect to GCC behavior.</li>
+  <li>  Refactoring to disentangle ppc64-elf-linux ABI from Darwin
+        ppc64 ABI support.</li>
+  <li>  Assorted new test cases and test case fixes (endian and word
+        size issues).</li>
+  <li>  Fixes for big-endian codegen bugs, instruction encodings, and
+        instruction constraints.</li>
+  <li>  Implemented -integrated-as support.</li>
+  <li>  Additional support for Altivec compare operations.</li>
+  <li>  IBM long double support.</li>
 </ul>
+<p>There have also been code generation improvements for both 32- and 64-bit
+   code. Instruction scheduling support for the Freescale e500mc and e5500
+   cores has been added.</p>
 
 </div>
 
 <!--=========================================================================-->
 <h3>
-<a name="changes">Major Changes and Removed Features</a>
+<a name="NVPTX">PTX/NVPTX Target Improvements</a>
 </h3>
 
 <div>
 
-<p>If you're already an LLVM user or developer with out-of-tree changes based on
-   LLVM 3.2, this section lists some "gotchas" that you may run into upgrading
-   from the previous release.</p>
-
+<p>The PTX back-end has been replaced by the NVPTX back-end, which is based on
+   the LLVM back-end used by NVIDIA in their CUDA (nvcc) and OpenCL compiler.
+   Some highlights include:</p>
 <ul>
-  <li>...</li>
+  <li>Compatibility with PTX 3.1 and SM 3.5</li>
+  <li>Support for NVVM intrinsics as defined in the NVIDIA Compiler SDK</li>
+  <li>Full compatibility with old PTX back-end, with much greater coverage of
+      LLVM IR</li>
 </ul>
 
+<p>Please submit any back-end bugs to the LLVM Bugzilla site.</p>
+
 </div>
 
 <!--=========================================================================-->
 <h3>
-<a name="api_changes">Internal API Changes</a>
+<a name="OtherTS">Other Target Specific Improvements</a>
 </h3>
 
 <div>
 
-<p>In addition, many APIs have changed in this release.  Some of the major
-   LLVM API changes are:</p>
-
 <ul>
-  <li>...</li>
+  <li>Added support for custom names for library functions in TargetLibraryInfo.</li>
 </ul>
 
 </div>
 
 <!--=========================================================================-->
 <h3>
-<a name="tools_changes">Tools Changes</a>
+<a name="changes">Major Changes and Removed Features</a>
 </h3>
 
 <div>
 
-<p>In addition, some tools have changed in this release. Some of the changes
-   are:</p>
+<p>If you're already an LLVM user or developer with out-of-tree changes based on
+   LLVM 3.2, this section lists some "gotchas" that you may run into upgrading
+   from the previous release.</p>
 
 <ul>
-  <li>...</li>
-</ul>
-
+<li>llvm-ld and llvm-stub have been removed, llvm-ld functionality can be partially replaced by 
+        llvm-link | opt | {llc | as, llc -filetype=obj} | ld, or fully replaced by Clang. </li>
+<li>MCJIT: added support for inline assembly (requires asm parser), added faux remote target execution to lli option '-remote-mcjit'.</li>
+</ul> 
+ 
 </div>
 
+<!--=========================================================================-->
+<h3>
+<a name="api_changes">Internal API Changes</a>
+</h3>
+
+<div>
+
+<p>In addition, many APIs have changed in this release.  Some of the major
+   LLVM API changes are:</p>
+
+<p> We've added a new interface for allowing IR-level passes to access
+  target-specific information. A new IR-level pass, called
+  "TargetTransformInfo" provides a number of low-level interfaces.
+  LSR and LowerInvoke already use the new interface. </p>
+
+<p> The TargetData structure has been renamed to DataLayout and moved to VMCore
+to remove a dependency on Target. </p>
+
+</div>
 
 <!--=========================================================================-->
 <h3>
-<a name="python">Python Bindings</a>
+<a name="tools_changes">Tools Changes</a>
 </h3>
 
 <div>
 
-<p>Officially supported Python bindings have been added! Feature support is far
-   from complete. The current bindings support interfaces to:</p>
+<p>In addition, some tools have changed in this release. Some of the changes are:</p>
 
 <ul>
-  <li>...</li>
+<li>opt: added support for '-mtriple' option.</li>
+<li>llvm-mc : - added '-disassemble' support for '-show-inst' and '-show-encoding' options, added '-edis' option to produce annotated 
+        disassembly output for X86 and ARM targets.</li>
+<li>libprofile: allows the profile data file name to be specified by the LLVMPROF_OUTPUT environment variable.</li>
+<li>llvm-objdump: has been changed to display available targets, '-arch' option accepts x86 and x86-64 as valid arch names.</li>
+<li>llc and opt: added FMA formation from pairs of FADD + FMUL or FSUB + FMUL enabled by option '-enable-excess-fp-precision' or option '-enable-unsafe-fp-math',
+       option '-fp-contract' controls the creation by optimizations of fused FP by selecting Fast, Standard, or Strict mode.</li>
+<li>llc: object file output from llc is no longer considered experimental.</li>
+<li>gold plugin: handles Position Independent Executables.</li>
 </ul>
 
 </div>
 
-</div>
 
 <!-- *********************************************************************** -->
 <h2>
@@ -707,7 +926,7 @@
   <p>Known problem areas include:</p>
 
 <ul>
-  <li>The CellSPU, MSP430, PTX and XCore backends are experimental.</li>
+  <li>The CellSPU, MSP430, and XCore backends are experimental, and the CellSPU backend will be removed in LLVM 3.3.</li>
 
   <li>The integrated assembler, disassembler, and JIT is not supported by
       several targets. If an integrated assembler is not supported, then a

Modified: llvm/branches/AMDILBackend/docs/SourceLevelDebugging.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/SourceLevelDebugging.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/SourceLevelDebugging.html (original)
+++ llvm/branches/AMDILBackend/docs/SourceLevelDebugging.html Tue Jan 15 11:16:16 2013
@@ -2367,11 +2367,11 @@
 |  HEADER.header_data_len | uint32_t
 |  HEADER_DATA            | HeaderData
 |-------------------------|
-|  BUCKETS                | uint32_t[n_buckets] // 32 bit hash indexes
+|  BUCKETS                | uint32_t[bucket_count] // 32 bit hash indexes
 |-------------------------|
-|  HASHES                 | uint32_t[n_buckets] // 32 bit hash values
+|  HASHES                 | uint32_t[hashes_count] // 32 bit hash values
 |-------------------------|
-|  OFFSETS                | uint32_t[n_buckets] // 32 bit offsets to hash value data
+|  OFFSETS                | uint32_t[hashes_count] // 32 bit offsets to hash value data
 |-------------------------|
 |  ALL HASH DATA          |
 `-------------------------'

Modified: llvm/branches/AMDILBackend/docs/TestingGuide.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/TestingGuide.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/TestingGuide.html (original)
+++ llvm/branches/AMDILBackend/docs/TestingGuide.html Tue Jan 15 11:16:16 2013
@@ -218,11 +218,11 @@
 
 <p>To run individual tests or subsets of tests, you can use the 'llvm-lit'
 script which is built as part of LLVM. For example, to run the
-'Integer/BitCast.ll' test by itself you can run:</p>
+'Integer/BitPacked.ll' test by itself you can run:</p>
 
 <div class="doc_code">
 <pre>
-% llvm-lit ~/llvm/test/Integer/BitCast.ll 
+% llvm-lit ~/llvm/test/Integer/BitPacked.ll 
 </pre>
 </div>
 
@@ -798,14 +798,15 @@
   <p>Sometimes it is necessary to mark a test case as "expected fail" or XFAIL.
   You can easily mark a test as XFAIL just by including <tt>XFAIL: </tt> on a
   line near the top of the file. This signals that the test case should succeed
-  if the test fails. Such test cases are counted separately by the testing tool. To
-  specify an expected fail, use the XFAIL keyword in the comments of the test
-  program followed by a colon and one or more regular expressions (separated by
-  a comma). The regular expressions allow you to XFAIL the test conditionally by
-  host platform. The regular expressions following the : are matched against the
-  target triplet for the host machine. If there is a match, the test is expected
-  to fail. If not, the test is expected to succeed. To XFAIL everywhere just
-  specify <tt>XFAIL: *</tt>. Here is an example of an <tt>XFAIL</tt> line:</p>
+  if the test fails. Such test cases are counted separately by the testing
+  tool. To specify an expected fail, use the XFAIL keyword in the comments of
+  the test program followed by a colon and one or more failure patterns. Each
+  failure pattern can be either '*' (to specify fail everywhere), or a part of a
+  target triple (indicating the test should fail on that platform), or the name
+  of a configurable feature (for example, "loadable_module"). If there is a
+  match, the test is expected to fail. If not, the test is expected to
+  succeed. To XFAIL everywhere just specify <tt>XFAIL: *</tt>. Here is an
+  example of an <tt>XFAIL</tt> line:</p>
 
 <div class="doc_code">
 <pre>

Modified: llvm/branches/AMDILBackend/docs/WritingAnLLVMBackend.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/WritingAnLLVMBackend.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/WritingAnLLVMBackend.html (original)
+++ llvm/branches/AMDILBackend/docs/WritingAnLLVMBackend.html Tue Jan 15 11:16:16 2013
@@ -32,6 +32,7 @@
   <li><a href="#InstructionSet">Instruction Set</a>
   <ul>  
     <li><a href="#operandMapping">Instruction Operand Mapping</a></li>
+    <li><a href="#relationMapping">Instruction Relation Mapping</a></li>
     <li><a href="#implementInstr">Implement a subclass of TargetInstrInfo</a></li>
     <li><a href="#branchFolding">Branch Folding and If Conversion</a></li>
   </ul></li>
@@ -314,14 +315,14 @@
 intended to obtain the instruction set (<tt>getInstrInfo</tt>), register set
 (<tt>getRegisterInfo</tt>), stack frame layout (<tt>getFrameInfo</tt>), and
 similar information. <tt>XXXTargetMachine</tt> must also implement the
-<tt>getTargetData</tt> method to access an object with target-specific data
+<tt>getDataLayout</tt> method to access an object with target-specific data
 characteristics, such as data type size and alignment requirements.
 </p>
 
 <p>
 For instance, for the SPARC target, the header file
 <tt>SparcTargetMachine.h</tt> declares prototypes for several <tt>get*Info</tt>
-and <tt>getTargetData</tt> methods that simply return a class member.
+and <tt>getDataLayout</tt> methods that simply return a class member.
 </p>
 
 <div class="doc_code">
@@ -331,7 +332,7 @@
 class Module;
 
 class SparcTargetMachine : public LLVMTargetMachine {
-  const TargetData DataLayout;       // Calculates type size & alignment
+  const DataLayout DataLayout;       // Calculates type size & alignment
   SparcSubtarget Subtarget;
   SparcInstrInfo InstrInfo;
   TargetFrameInfo FrameInfo;
@@ -348,7 +349,7 @@
   virtual const TargetRegisterInfo *getRegisterInfo() const {
     return &InstrInfo.getRegisterInfo();
   }
-  virtual const TargetData *getTargetData() const { return &DataLayout; }
+  virtual const DataLayout *getDataLayout() const { return &DataLayout; }
   static unsigned getModuleMatchQuality(const Module &M);
 
   // Pass Pipeline Configuration
@@ -364,7 +365,7 @@
 <li><tt>getInstrInfo()</tt></li>
 <li><tt>getRegisterInfo()</tt></li>
 <li><tt>getFrameInfo()</tt></li>
-<li><tt>getTargetData()</tt></li>
+<li><tt>getDataLayout()</tt></li>
 <li><tt>getSubtargetImpl()</tt></li>
 </ul>
 
@@ -1259,6 +1260,29 @@
 
 <!-- ======================================================================= -->
 <h3>
+  <a name="relationMapping">Instruction Relation Mapping</a>
+</h3>
+
+<div>
+
+<p>
+This TableGen feature is used to relate instructions with each other. It is
+particularly useful when you have multiple instruction formats and need to
+switch between them after instruction selection. This entire feature is driven
+by relation models which can be defined in <tt>XXXInstrInfo.td</tt> files
+according to the target-specific instruction set. Relation models are defined
+using <tt>InstrMapping</tt> class as a base. TableGen parses all the models
+and generates instruction relation maps using the specified information.
+Relation maps are emitted as tables in the <tt>XXXGenInstrInfo.inc</tt> file
+along with the functions to query them. For the detailed information on how to
+use this feature, please refer to
+<a href="HowToUseInstrMappings.html">How to add Instruction Mappings</a>
+document.
+</p>
+</div>
+
+<!-- ======================================================================= -->
+<h3>
   <a name="implementInstr">Implement a subclass of </a>
   <a href="CodeGenerator.html#targetinstrinfo">TargetInstrInfo</a>
 </h3>

Modified: llvm/branches/AMDILBackend/docs/conf.py
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/conf.py?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/conf.py (original)
+++ llvm/branches/AMDILBackend/docs/conf.py Tue Jan 15 11:16:16 2013
@@ -98,7 +98,7 @@
 #html_theme_options = {}
 
 # Add any paths that contain custom themes here, relative to this directory.
-html_theme_path = ["."]
+html_theme_path = ["_themes"]
 
 # The name for this set of Sphinx documents.  If None, it defaults to
 # "<project> v<release> documentation".
@@ -134,18 +134,7 @@
 
 # Additional templates that should be rendered to pages, maps page names to
 # template names.
-#
-# We load all the old-school HTML documentation pages into Sphinx here.
-basedir = os.path.dirname(__file__)
-html_additional_pages = {}
-for directory in ('', 'tutorial'):
-    for file in os.listdir(os.path.join(basedir, directory)):
-        if not file.endswith('.html'):
-            continue
-
-        subpath = os.path.join(directory, file)
-        name,_ = os.path.splitext(subpath)
-        html_additional_pages[name] = subpath
+#html_additional_pages = {}
 
 # If false, no module index is generated.
 #html_domain_indices = True
@@ -226,6 +215,7 @@
 
 # Automatically derive the list of man pages from the contents of the command
 # guide subdirectory.
+basedir = os.path.dirname(__file__)
 man_page_authors = "Maintained by The LLVM Team (http://llvm.org/)."
 command_guide_subpath = 'CommandGuide'
 command_guide_path = os.path.join(basedir, command_guide_subpath)
@@ -237,9 +227,8 @@
     # Otherwise, automatically extract the description.
     file_subpath = os.path.join(command_guide_subpath, name)
     with open(os.path.join(command_guide_path, name)) as f:
-        it = iter(f)
-        title = it.next()[:-1]
-        header = it.next()[:-1]
+        title = f.readline().rstrip('\n')
+        header = f.readline().rstrip('\n')
 
         if len(header) != len(title):
             print >>sys.stderr, (

Modified: llvm/branches/AMDILBackend/docs/index.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/index.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/index.rst (original)
+++ llvm/branches/AMDILBackend/docs/index.rst Tue Jan 15 11:16:16 2013
@@ -15,43 +15,43 @@
 Similarly, documentation is broken down into several high-level groupings
 targeted at different audiences:
 
-  * **Design & Overview**
+* **Design & Overview**
 
-    Several introductory papers and presentations are available at
-    :ref:`design_and_overview`.
+ Several introductory papers and presentations are available at
+ :ref:`design_and_overview`.
 
-  * **Publications**
+* **Publications**
 
-    The list of `publications <http://llvm.org/pubs>`_ based on LLVM.
+ The list of `publications <http://llvm.org/pubs>`_ based on LLVM.
 
-  * **User Guides**
+* **User Guides**
 
-    Those new to the LLVM system should first vist the :ref:`userguides`.
+ Those new to the LLVM system should first visit the :ref:`userguides`.
 
-    NOTE: If you are a user who is only interested in using LLVM-based
-    compilers, you should look into `Clang <http://clang.llvm.org>`_ or
-    `DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
-    intended for users who have a need to work with the intermediate LLVM
-    representation.
+ NOTE: If you are a user who is only interested in using LLVM-based
+ compilers, you should look into `Clang <http://clang.llvm.org>`_ or
+ `DragonEgg <http://dragonegg.llvm.org>`_ instead. The documentation here is
+ intended for users who have a need to work with the intermediate LLVM
+ representation.
 
-  * **API Clients**
+* **API Clients**
 
-    Developers of applications which use LLVM as a library should visit the
-    :ref:`programming`.
+ Developers of applications which use LLVM as a library should visit the
+ :ref:`programming`.
 
-  * **Subsystems**
+* **Subsystems**
 
-    API clients and LLVM developers may be interested in the
-    :ref:`subsystems` documentation.
+ API clients and LLVM developers may be interested in the
+ :ref:`subsystems` documentation.
 
-  * **Development Process**
+* **Development Process**
 
-    Additional documentation on the LLVM project can be found at
-    :ref:`development_process`.
+ Additional documentation on the LLVM project can be found at
+ :ref:`development_process`.
 
-  * **Mailing Lists**
+* **Mailing Lists**
 
-    For more information, consider consulting the LLVM :ref:`mailing_lists`.
+ For more information, consider consulting the LLVM :ref:`mailing_lists`.
 
 .. toctree::
    :maxdepth: 2

Removed: llvm/branches/AMDILBackend/docs/llvm-theme/layout.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/llvm-theme/layout.html?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/llvm-theme/layout.html (original)
+++ llvm/branches/AMDILBackend/docs/llvm-theme/layout.html (removed)
@@ -1,23 +0,0 @@
-{#
-    sphinxdoc/layout.html
-    ~~~~~~~~~~~~~~~~~~~~~
-
-    Sphinx layout template for the sphinxdoc theme.
-
-    :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
-    :license: BSD, see LICENSE for details.
-#}
-{% extends "basic/layout.html" %}
-
-{% block relbar1 %}
-<div class="logo">
-  <a href="{{ pathto('index') }}">
-    <img src="{{pathto("_static/logo.png", 1) }}"
-         alt="LLVM Logo" width="250" height="88"/></a>
-</div>
-{{ super() }}
-{% endblock %}
-
-{# put the sidebar before the body #}
-{% block sidebar1 %}{{ sidebar() }}{% endblock %}
-{% block sidebar2 %}{% endblock %}

Removed: llvm/branches/AMDILBackend/docs/llvm-theme/static/contents.png
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/llvm-theme/static/contents.png?rev=172540&view=auto
==============================================================================
Binary files llvm/branches/AMDILBackend/docs/llvm-theme/static/contents.png (original) and llvm/branches/AMDILBackend/docs/llvm-theme/static/contents.png (removed) differ

Removed: llvm/branches/AMDILBackend/docs/llvm-theme/static/llvm-theme.css
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/llvm-theme/static/llvm-theme.css?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/llvm-theme/static/llvm-theme.css (original)
+++ llvm/branches/AMDILBackend/docs/llvm-theme/static/llvm-theme.css (removed)
@@ -1,374 +0,0 @@
-/*
- * sphinxdoc.css_t
- * ~~~~~~~~~~~~~~~
- *
- * Sphinx stylesheet -- sphinxdoc theme.  Originally created by
- * Armin Ronacher for Werkzeug.
- *
- * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
- at import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
-                 'Verdana', sans-serif;
-    font-size: 14px;
-    letter-spacing: -0.01em;
-    line-height: 150%;
-    text-align: center;
-    background-color: #BFD1D4;
-    color: black;
-    padding: 0;
-    border: 1px solid #aaa;
-
-    margin: 0px 80px 0px 80px;
-    min-width: 740px;
-}
-
-div.logo {
-    background-color: white;
-    text-align: left;
-    padding: 10px 10px 15px 15px;
-}
-
-div.document {
-    background-color: white;
-    text-align: left;
-    background-image: url(contents.png);
-    background-repeat: repeat-x;
-}
-
-div.bodywrapper {
-    margin: 0 240px 0 0;
-    border-right: 1px solid #ccc;
-}
-
-div.body {
-    margin: 0;
-    padding: 0.5em 20px 20px 20px;
-}
-
-div.related {
-    font-size: 1em;
-}
-
-div.related ul {
-    background-image: url(navigation.png);
-    height: 2em;
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-}
-
-div.related ul li {
-    margin: 0;
-    padding: 0;
-    height: 2em;
-    float: left;
-}
-
-div.related ul li.right {
-    float: right;
-    margin-right: 5px;
-}
-
-div.related ul li a {
-    margin: 0;
-    padding: 0 5px 0 5px;
-    line-height: 1.75em;
-    color: #EE9816;
-}
-
-div.related ul li a:hover {
-    color: #3CA8E7;
-}
-
-div.sphinxsidebarwrapper {
-    padding: 0;
-}
-
-div.sphinxsidebar {
-    margin: 0;
-    padding: 0.5em 15px 15px 0;
-    width: 210px;
-    float: right;
-    font-size: 1em;
-    text-align: left;
-}
-
-div.sphinxsidebar h3, div.sphinxsidebar h4 {
-    margin: 1em 0 0.5em 0;
-    font-size: 1em;
-    padding: 0.1em 0 0.1em 0.5em;
-    color: white;
-    border: 1px solid #86989B;
-    background-color: #AFC1C4;
-}
-
-div.sphinxsidebar h3 a {
-    color: white;
-}
-
-div.sphinxsidebar ul {
-    padding-left: 1.5em;
-    margin-top: 7px;
-    padding: 0;
-    line-height: 130%;
-}
-
-div.sphinxsidebar ul ul {
-    margin-left: 20px;
-}
-
-div.footer {
-    background-color: #E3EFF1;
-    color: #86989B;
-    padding: 3px 8px 3px 0;
-    clear: both;
-    font-size: 0.8em;
-    text-align: right;
-}
-
-div.footer a {
-    color: #86989B;
-    text-decoration: underline;
-}
-
-/* -- body styles ----------------------------------------------------------- */
-
-p {
-    margin: 0.8em 0 0.5em 0;
-}
-
-a {
-    color: #CA7900;
-    text-decoration: none;
-}
-
-a:hover {
-    color: #2491CF;
-}
-
-div.body p a{
-    text-decoration: underline;
-}
-
-h1 {
-    margin: 0;
-    padding: 0.7em 0 0.3em 0;
-    font-size: 1.5em;
-    color: #11557C;
-}
-
-h2 {
-    margin: 1.3em 0 0.2em 0;
-    font-size: 1.35em;
-    padding: 0;
-}
-
-h3 {
-    margin: 1em 0 -0.3em 0;
-    font-size: 1.2em;
-}
-
-h3 a:hover {
-    text-decoration: underline;
-}
-
-div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a {
-    color: black!important;
-}
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    background-color: #f2f2f2;
-    font-weight: normal;
-    color: #20435c;
-    border-bottom: 1px solid #ccc;
-    margin: 20px -20px 10px -20px;
-    padding: 3px 0 3px 10px;
-}
-
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 160%; }
-div.body h3 { font-size: 140%; }
-div.body h4 { font-size: 120%; }
-div.body h5 { font-size: 110%; }
-div.body h6 { font-size: 100%; }
-
-h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor {
-    display: none;
-    margin: 0 0 0 0.3em;
-    padding: 0 0.2em 0 0.2em;
-    color: #aaa!important;
-}
-
-h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor,
-h5:hover a.anchor, h6:hover a.anchor {
-    display: inline;
-}
-
-h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover,
-h5 a.anchor:hover, h6 a.anchor:hover {
-    color: #777;
-    background-color: #eee;
-}
-
-a.headerlink {
-    color: #c60f0f!important;
-    font-size: 1em;
-    margin-left: 6px;
-    padding: 0 4px 0 4px;
-    text-decoration: none!important;
-}
-
-a.headerlink:hover {
-    background-color: #ccc;
-    color: white!important;
-}
-
-cite, code, tt {
-    font-family: 'Consolas', 'Deja Vu Sans Mono',
-                 'Bitstream Vera Sans Mono', monospace;
-    font-size: 0.95em;
-    letter-spacing: 0.01em;
-}
-
-:not(a.reference) > tt {
-    background-color: #f2f2f2;
-    border-bottom: 1px solid #ddd;
-    color: #333;
-}
-
-tt.descname, tt.descclassname, tt.xref {
-    border: 0;
-}
-
-hr {
-    border: 1px solid #abc;
-    margin: 2em;
-}
-
-p a tt {
-    border: 0;
-    color: #CA7900;
-}
-
-p a tt:hover {
-    color: #2491CF;
-}
-
-a tt {
-    border: none;
-}
-
-pre {
-    font-family: 'Consolas', 'Deja Vu Sans Mono',
-                 'Bitstream Vera Sans Mono', monospace;
-    font-size: 0.95em;
-    letter-spacing: 0.015em;
-    line-height: 120%;
-    padding: 0.5em;
-    border: 1px solid #ccc;
-    background-color: #f8f8f8;
-}
-
-pre a {
-    color: inherit;
-    text-decoration: underline;
-}
-
-td.linenos pre {
-    padding: 0.5em 0;
-}
-
-div.quotebar {
-    background-color: #f8f8f8;
-    max-width: 250px;
-    float: right;
-    padding: 2px 7px;
-    border: 1px solid #ccc;
-}
-
-div.topic {
-    background-color: #f8f8f8;
-}
-
-table {
-    border-collapse: collapse;
-    margin: 0 -0.5em 0 -0.5em;
-}
-
-table td, table th {
-    padding: 0.2em 0.5em 0.2em 0.5em;
-}
-
-div.admonition, div.warning {
-    font-size: 0.9em;
-    margin: 1em 0 1em 0;
-    border: 1px solid #86989B;
-    background-color: #f7f7f7;
-    padding: 0;
-}
-
-div.admonition p, div.warning p {
-    margin: 0.5em 1em 0.5em 1em;
-    padding: 0;
-}
-
-div.admonition pre, div.warning pre {
-    margin: 0.4em 1em 0.4em 1em;
-}
-
-div.admonition p.admonition-title,
-div.warning p.admonition-title {
-    margin: 0;
-    padding: 0.1em 0 0.1em 0.5em;
-    color: white;
-    border-bottom: 1px solid #86989B;
-    font-weight: bold;
-    background-color: #AFC1C4;
-}
-
-div.warning {
-    border: 1px solid #940000;
-}
-
-div.warning p.admonition-title {
-    background-color: #CF0000;
-    border-bottom-color: #940000;
-}
-
-div.admonition ul, div.admonition ol,
-div.warning ul, div.warning ol {
-    margin: 0.1em 0.5em 0.5em 3em;
-    padding: 0;
-}
-
-div.versioninfo {
-    margin: 1em 0 0 0;
-    border: 1px solid #ccc;
-    background-color: #DDEAF0;
-    padding: 8px;
-    line-height: 1.3em;
-    font-size: 0.9em;
-}
-
-.viewcode-back {
-    font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
-                 'Verdana', sans-serif;
-}
-
-div.viewcode-block:target {
-    background-color: #f4debf;
-    border-top: 1px solid #ac9;
-    border-bottom: 1px solid #ac9;
-}

Removed: llvm/branches/AMDILBackend/docs/llvm-theme/static/logo.png
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/llvm-theme/static/logo.png?rev=172540&view=auto
==============================================================================
Binary files llvm/branches/AMDILBackend/docs/llvm-theme/static/logo.png (original) and llvm/branches/AMDILBackend/docs/llvm-theme/static/logo.png (removed) differ

Removed: llvm/branches/AMDILBackend/docs/llvm-theme/static/navigation.png
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/llvm-theme/static/navigation.png?rev=172540&view=auto
==============================================================================
Binary files llvm/branches/AMDILBackend/docs/llvm-theme/static/navigation.png (original) and llvm/branches/AMDILBackend/docs/llvm-theme/static/navigation.png (removed) differ

Removed: llvm/branches/AMDILBackend/docs/llvm-theme/theme.conf
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/llvm-theme/theme.conf?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/docs/llvm-theme/theme.conf (original)
+++ llvm/branches/AMDILBackend/docs/llvm-theme/theme.conf (removed)
@@ -1,4 +0,0 @@
-[theme]
-inherit = basic
-stylesheet = llvm-theme.css
-pygments_style = friendly

Modified: llvm/branches/AMDILBackend/docs/programming.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/programming.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/programming.rst (original)
+++ llvm/branches/AMDILBackend/docs/programming.rst Tue Jan 15 11:16:16 2013
@@ -6,14 +6,22 @@
 .. toctree::
    :hidden:
 
+   Atomics
    CodingStandards
    CommandLine
+   CompilerWriterInfo
+   ExtendingLLVM
+   HowToSetUpLLVMStyleRTTI
 
 * `LLVM Language Reference Manual <LangRef.html>`_
 
   Defines the LLVM intermediate representation and the assembly form of the
   different nodes.
 
+* :ref:`atomics`
+
+  Information about LLVM's concurrency model.
+
 * `The LLVM Programmers Manual <ProgrammersManual.html>`_
 
   Introduction to the general layout of the LLVM sourcebase, important classes
@@ -28,7 +36,12 @@
   Details the LLVM coding standards and provides useful information on writing
   efficient C++ code.
 
-* `Extending LLVM <ExtendingLLVM.html>`_
+* :doc:`HowToSetUpLLVMStyleRTTI`
+
+  How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
+  class hierarchy.
+
+* :ref:`extending_llvm`
 
   Look here to see how to add instructions and intrinsics to LLVM.
 
@@ -38,3 +51,7 @@
   (`tarball <http://llvm.org/doxygen/doxygen.tar.gz>`_)
 
 * `ViewVC Repository Browser <http://llvm.org/viewvc/>`_
+
+* :ref:`compiler_writer_info`
+
+  A list of helpful links for compiler writers.

Modified: llvm/branches/AMDILBackend/docs/subsystems.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/subsystems.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/subsystems.rst (original)
+++ llvm/branches/AMDILBackend/docs/subsystems.rst Tue Jan 15 11:16:16 2013
@@ -15,6 +15,9 @@
    LinkTimeOptimization
    SegmentedStacks
    TableGenFundamentals
+   DebuggingJITedCode
+   GoldPlugin
+   MarkedUpDisassembly
 
 * `Writing an LLVM Pass <WritingAnLLVMPass.html>`_
     
@@ -74,11 +77,11 @@
    This document describes the interface between LLVM intermodular optimizer
    and the linker and its design
     
-* `The LLVM gold plugin <GoldPlugin.html>`_
+* :ref:`gold-plugin`
     
    How to build your programs with link-time optimization on Linux.
     
-* `The GDB JIT interface <DebuggingJITedCode.html>`_
+* :ref:`debugging-jited-code`
     
    How to debug JITed code with GDB.
     
@@ -89,3 +92,15 @@
 * :ref:`segmented_stacks`
 
    This document describes segmented stacks and how they are used in LLVM.
+
+* `Howto: Implementing LLVM Integrated Assembler`_
+
+   A simple guide for how to implement an LLVM integrated assembler for an
+   architecture.
+
+.. _`Howto: Implementing LLVM Integrated Assembler`: http://www.embecosm.com/download/ean10.html
+
+* :ref:`marked_up_disassembly`
+
+   This document describes the optional rich disassembly output syntax.
+

Modified: llvm/branches/AMDILBackend/docs/tutorial/LangImpl4.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/LangImpl4.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/LangImpl4.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/LangImpl4.html Tue Jan 15 11:16:16 2013
@@ -173,7 +173,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Do simple "peephole" optimizations and bit-twiddling optzns.
@@ -523,7 +523,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -1103,7 +1103,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Do simple "peephole" optimizations and bit-twiddling optzns.

Modified: llvm/branches/AMDILBackend/docs/tutorial/LangImpl5.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/LangImpl5.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/LangImpl5.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/LangImpl5.html Tue Jan 15 11:16:16 2013
@@ -901,7 +901,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -1723,7 +1723,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Do simple "peephole" optimizations and bit-twiddling optzns.

Modified: llvm/branches/AMDILBackend/docs/tutorial/LangImpl6.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/LangImpl6.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/LangImpl6.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/LangImpl6.html Tue Jan 15 11:16:16 2013
@@ -840,7 +840,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -1780,7 +1780,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Do simple "peephole" optimizations and bit-twiddling optzns.

Modified: llvm/branches/AMDILBackend/docs/tutorial/LangImpl7.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/LangImpl7.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/LangImpl7.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/LangImpl7.html Tue Jan 15 11:16:16 2013
@@ -524,7 +524,7 @@
 <pre>
     // Set up the optimizer pipeline.  Start with registering info about how the
     // target lays out data structures.
-    OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+    OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
     <b>// Promote allocas to registers.
     OurFPM.add(createPromoteMemoryToRegisterPass());</b>
     // Do simple "peephole" optimizations and bit-twiddling optzns.
@@ -1008,7 +1008,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -2113,7 +2113,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Promote allocas to registers.

Modified: llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl4.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl4.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl4.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl4.html Tue Jan 15 11:16:16 2013
@@ -189,7 +189,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Do simple "peephole" optimizations and bit-twiddling optzn. *)
   add_instruction_combining the_fpm;
@@ -965,7 +965,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Do simple "peephole" optimizations and bit-twiddling optzn. *)
   add_instruction_combination the_fpm;

Modified: llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl5.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl5.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl5.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl5.html Tue Jan 15 11:16:16 2013
@@ -1498,7 +1498,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Do simple "peephole" optimizations and bit-twiddling optzn. *)
   add_instruction_combination the_fpm;

Modified: llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl6.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl6.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl6.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl6.html Tue Jan 15 11:16:16 2013
@@ -1506,7 +1506,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Do simple "peephole" optimizations and bit-twiddling optzn. *)
   add_instruction_combination the_fpm;

Modified: llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl7.html
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl7.html?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl7.html (original)
+++ llvm/branches/AMDILBackend/docs/tutorial/OCamlLangImpl7.html Tue Jan 15 11:16:16 2013
@@ -545,7 +545,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   <b>(* Promote allocas to registers. *)
   add_memory_to_register_promotion the_fpm;</b>
@@ -1834,7 +1834,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Promote allocas to registers. *)
   add_memory_to_register_promotion the_fpm;

Modified: llvm/branches/AMDILBackend/docs/userguides.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/userguides.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/userguides.rst (original)
+++ llvm/branches/AMDILBackend/docs/userguides.rst Tue Jan 15 11:16:16 2013
@@ -7,14 +7,21 @@
    :hidden:
 
    CMake
+   HowToBuildOnARM
    CommandGuide/index
    DeveloperPolicy
+   GettingStarted
    GettingStartedVS
    FAQ
    Lexicon
    Packaging
+   HowToAddABuilder
+   yaml2obj
+   HowToSubmitABug
+   SphinxQuickstartTemplate
+   Phabricator
 
-* `The LLVM Getting Started Guide <GettingStarted.html>`_
+* :ref:`getting_started`
     
    Discusses how to get up and running quickly with the LLVM infrastructure.
    Everything from unpacking and compilation of the distribution to execution
@@ -24,7 +31,11 @@
 
    An addendum to the main Getting Started guide for those using the `CMake
    build system <http://www.cmake.org>`_.
-    
+
+* :ref:`how_to_build_on_arm`
+
+   Notes on building and testing LLVM/Clang on ARM.
+
 * `Getting Started with the LLVM System using Microsoft Visual Studio
   <GettingStartedVS.html>`_
 
@@ -57,10 +68,14 @@
 
    This describes new features, known bugs, and other limitations.
 
-* `How to Submit A Bug Report <HowToSubmitABug.html>`_
+* :ref:`how-to-submit-a-bug-report`
     
    Instructions for properly submitting information about any bugs you run into
    in the LLVM system.
+* :doc:`SphinxQuickstartTemplate`
+
+  A template + tutorial for writing new Sphinx documentation. It is meant
+  to be read in source form.
     
 * `LLVM Testing Infrastructure Guide <TestingGuide.html>`_
 
@@ -78,7 +93,7 @@
 
    Definition of acronyms, terms and concepts used in LLVM.
 
-* `How To Add Your Build Configuration To LLVM Buildbot Infrastructure <HowToAddABuilder.html>`_
+* :ref:`how_to_add_a_builder`
 
    Instructions for adding new builder to LLVM buildbot master.
     

Modified: llvm/branches/AMDILBackend/docs/yaml2obj.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/docs/yaml2obj.rst?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/docs/yaml2obj.rst (original)
+++ llvm/branches/AMDILBackend/docs/yaml2obj.rst Tue Jan 15 11:16:16 2013
@@ -6,9 +6,9 @@
 yaml2obj takes a YAML description of an object file and converts it to a binary
 file.
 
-    $ yaml2py input-file
+    $ yaml2obj input-file
 
-.. program:: yaml2py
+.. program:: yaml2obj
 
 Outputs the binary to stdout.
 

Modified: llvm/branches/AMDILBackend/examples/ExceptionDemo/ExceptionDemo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/ExceptionDemo/ExceptionDemo.cpp?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/ExceptionDemo/ExceptionDemo.cpp (original)
+++ llvm/branches/AMDILBackend/examples/ExceptionDemo/ExceptionDemo.cpp Tue Jan 15 11:16:16 2013
@@ -10,13 +10,13 @@
 // Demo program which implements an example LLVM exception implementation, and
 // shows several test cases including the handling of foreign exceptions.
 // It is run with type info types arguments to throw. A test will
-// be run for each given type info type. While type info types with the value 
+// be run for each given type info type. While type info types with the value
 // of -1 will trigger a foreign C++ exception to be thrown; type info types
-// <= 6 and >= 1 will cause the associated generated exceptions to be thrown 
+// <= 6 and >= 1 will cause the associated generated exceptions to be thrown
 // and caught by generated test functions; and type info types > 6
 // will result in exceptions which pass through to the test harness. All other
 // type info types are not supported and could cause a crash. In all cases,
-// the "finally" blocks of every generated test functions will executed 
+// the "finally" blocks of every generated test functions will executed
 // regardless of whether or not that test function ignores or catches the
 // thrown exception.
 //
@@ -25,25 +25,25 @@
 // ExceptionDemo
 //
 //     causes a usage to be printed to stderr
-// 
+//
 // ExceptionDemo 2 3 7 -1
 //
 //     results in the following cases:
-//         - Value 2 causes an exception with a type info type of 2 to be 
+//         - Value 2 causes an exception with a type info type of 2 to be
 //           thrown and caught by an inner generated test function.
-//         - Value 3 causes an exception with a type info type of 3 to be 
+//         - Value 3 causes an exception with a type info type of 3 to be
 //           thrown and caught by an outer generated test function.
-//         - Value 7 causes an exception with a type info type of 7 to be 
+//         - Value 7 causes an exception with a type info type of 7 to be
 //           thrown and NOT be caught by any generated function.
 //         - Value -1 causes a foreign C++ exception to be thrown and not be
 //           caught by any generated function
 //
 //     Cases -1 and 7 are caught by a C++ test harness where the validity of
-//         of a C++ catch(...) clause catching a generated exception with a 
-//         type info type of 7 is explained by: example in rules 1.6.4 in 
+//         of a C++ catch(...) clause catching a generated exception with a
+//         type info type of 7 is explained by: example in rules 1.6.4 in
 //         http://sourcery.mentor.com/public/cxx-abi/abi-eh.html (v1.22)
 //
-// This code uses code from the llvm compiler-rt project and the llvm 
+// This code uses code from the llvm compiler-rt project and the llvm
 // Kaleidoscope project.
 //
 //===----------------------------------------------------------------------===//
@@ -57,18 +57,18 @@
 #include "llvm/PassManager.h"
 #include "llvm/Intrinsics.h"
 #include "llvm/Analysis/Verifier.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Target/TargetOptions.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/Dwarf.h"
 #include "llvm/Support/TargetSelect.h"
 
-// FIXME: Although all systems tested with (Linux, OS X), do not need this 
-//        header file included. A user on ubuntu reported, undefined symbols 
+// FIXME: Although all systems tested with (Linux, OS X), do not need this
+//        header file included. A user on ubuntu reported, undefined symbols
 //        for stderr, and fprintf, and the addition of this include fixed the
-//        issue for them. Given that LLVM's best practices include the goal 
-//        of reducing the number of redundant header files included, the 
-//        correct solution would be to find out why these symbols are not 
+//        issue for them. Given that LLVM's best practices include the goal
+//        of reducing the number of redundant header files included, the
+//        correct solution would be to find out why these symbols are not
 //        defined for the system in question, and fix the issue by finding out
 //        which LLVM header file, if any, would include these symbols.
 #include <cstdio>
@@ -81,11 +81,11 @@
 #define USE_GLOBAL_STR_CONSTS true
 #endif
 
-// System C++ ABI unwind types from: 
+// System C++ ABI unwind types from:
 //     http://sourcery.mentor.com/public/cxx-abi/abi-eh.html (v1.22)
 
 extern "C" {
-  
+
   typedef enum {
     _URC_NO_REASON = 0,
     _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
@@ -97,7 +97,7 @@
     _URC_INSTALL_CONTEXT = 7,
     _URC_CONTINUE_UNWIND = 8
   } _Unwind_Reason_Code;
-  
+
   typedef enum {
     _UA_SEARCH_PHASE = 1,
     _UA_CLEANUP_PHASE = 2,
@@ -105,34 +105,34 @@
     _UA_FORCE_UNWIND = 8,
     _UA_END_OF_STACK = 16
   } _Unwind_Action;
-  
+
   struct _Unwind_Exception;
-  
+
   typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
                                                 struct _Unwind_Exception *);
-  
+
   struct _Unwind_Exception {
     uint64_t exception_class;
     _Unwind_Exception_Cleanup_Fn exception_cleanup;
-    
-    uintptr_t private_1;    
-    uintptr_t private_2;    
-    
+
+    uintptr_t private_1;
+    uintptr_t private_2;
+
     // @@@ The IA-64 ABI says that this structure must be double-word aligned.
-    //  Taking that literally does not make much sense generically.  Instead 
+    //  Taking that literally does not make much sense generically.  Instead
     //  we provide the maximum alignment required by any type for the machine.
   } __attribute__((__aligned__));
-  
+
   struct _Unwind_Context;
   typedef struct _Unwind_Context *_Unwind_Context_t;
-  
+
   extern const uint8_t *_Unwind_GetLanguageSpecificData (_Unwind_Context_t c);
   extern uintptr_t _Unwind_GetGR (_Unwind_Context_t c, int i);
   extern void _Unwind_SetGR (_Unwind_Context_t c, int i, uintptr_t n);
   extern void _Unwind_SetIP (_Unwind_Context_t, uintptr_t new_value);
   extern uintptr_t _Unwind_GetIP (_Unwind_Context_t context);
   extern uintptr_t _Unwind_GetRegionStart (_Unwind_Context_t context);
-  
+
 } // extern "C"
 
 //
@@ -148,13 +148,13 @@
 
 /// This is our Exception class which relies on a negative offset to calculate
 /// pointers to its instances from pointers to its unwindException member.
-/// 
+///
 /// Note: The above unwind.h defines struct _Unwind_Exception to be aligned
 ///       on a double word boundary. This is necessary to match the standard:
 ///       http://refspecs.freestandards.org/abi-eh-1.21.html
 struct OurBaseException_t {
   struct OurExceptionType_t type;
-  
+
   // Note: This is properly aligned in unwind.h
   struct _Unwind_Exception unwindException;
 };
@@ -165,7 +165,7 @@
 typedef struct _Unwind_Exception OurUnwindException;
 
 //
-// Various globals used to support typeinfo and generatted exceptions in 
+// Various globals used to support typeinfo and generatted exceptions in
 // general
 //
 
@@ -173,7 +173,7 @@
 
 int64_t ourBaseFromUnwindOffset;
 
-const unsigned char ourBaseExcpClassChars[] = 
+const unsigned char ourBaseExcpClassChars[] =
 {'o', 'b', 'j', '\0', 'b', 'a', 's', '\0'};
 
 
@@ -203,7 +203,7 @@
 /// @param retType function return type
 /// @param theArgTypes function's ordered argument types
 /// @param theArgNames function's ordered arguments needed if use of this
-///        function corresponds to a function definition. Use empty 
+///        function corresponds to a function definition. Use empty
 ///        aggregate for function declarations.
 /// @param functName function name
 /// @param linkage function linkage
@@ -224,17 +224,17 @@
     llvm::Function::Create(functType, linkage, functName, &module);
   if (!ret || declarationOnly)
     return(ret);
-  
+
   namedValues.clear();
-  unsigned i = 0; 
+  unsigned i = 0;
   for (llvm::Function::arg_iterator argIndex = ret->arg_begin();
        i != theArgNames.size();
        ++argIndex, ++i) {
-    
+
     argIndex->setName(theArgNames[i]);
     namedValues[theArgNames[i]] = argIndex;
   }
-  
+
   return(ret);
 }
 
@@ -250,13 +250,13 @@
                                                 const std::string &varName,
                                                 llvm::Type *type,
                                                 llvm::Constant *initWith = 0) {
-  llvm::BasicBlock &block = function.getEntryBlock(); 
+  llvm::BasicBlock &block = function.getEntryBlock();
   llvm::IRBuilder<> tmp(&block, block.begin());
   llvm::AllocaInst *ret = tmp.CreateAlloca(type, 0, varName.c_str());
-  
-  if (initWith) 
+
+  if (initWith)
     tmp.CreateStore(initWith, ret);
-  
+
   return(ret);
 }
 
@@ -266,7 +266,7 @@
 //
 
 //
-// Runtime C Library functions 
+// Runtime C Library functions
 //
 
 // Note: using an extern "C" block so that static functions can be used
@@ -275,7 +275,7 @@
 // Note: Better ways to decide on bit width
 //
 /// Prints a 32 bit number, according to the format, to stderr.
-/// @param intToPrint integer to print 
+/// @param intToPrint integer to print
 /// @param format printf like format to use when printing
 void print32Int(int intToPrint, const char *format) {
   if (format) {
@@ -292,7 +292,7 @@
 // Note: Better ways to decide on bit width
 //
 /// Prints a 64 bit number, according to the format, to stderr.
-/// @param intToPrint integer to print 
+/// @param intToPrint integer to print
 /// @param format printf like format to use when printing
 void print64Int(long int intToPrint, const char *format) {
   if (format) {
@@ -327,19 +327,19 @@
   fprintf(stderr,
           "deleteOurException(...).\n");
 #endif
-  
+
   if (expToDelete &&
       (expToDelete->exception_class == ourBaseExceptionClass)) {
-    
+
     free(((char*) expToDelete) + ourBaseFromUnwindOffset);
   }
 }
 
 
-/// This function is the struct _Unwind_Exception API mandated delete function 
-/// used by foreign exception handlers when deleting our exception 
+/// This function is the struct _Unwind_Exception API mandated delete function
+/// used by foreign exception handlers when deleting our exception
 /// (OurException), instances.
-/// @param reason @link http://refspecs.freestandards.org/abi-eh-1.21.html 
+/// @param reason @link http://refspecs.freestandards.org/abi-eh-1.21.html
 /// @unlink
 /// @param expToDelete exception instance to delete
 void deleteFromUnwindOurException(_Unwind_Reason_Code reason,
@@ -348,7 +348,7 @@
   fprintf(stderr,
           "deleteFromUnwindOurException(...).\n");
 #endif
-  
+
   deleteOurException(expToDelete);
 }
 
@@ -362,13 +362,13 @@
   (ret->type).type = type;
   (ret->unwindException).exception_class = ourBaseExceptionClass;
   (ret->unwindException).exception_cleanup = deleteFromUnwindOurException;
-  
+
   return(&(ret->unwindException));
 }
 
 
-/// Read a uleb128 encoded value and advance pointer 
-/// See Variable Length Data in: 
+/// Read a uleb128 encoded value and advance pointer
+/// See Variable Length Data in:
 /// @link http://dwarfstd.org/Dwarf3.pdf @unlink
 /// @param data reference variable holding memory pointer to decode from
 /// @returns decoded value
@@ -377,22 +377,22 @@
   uintptr_t shift = 0;
   unsigned char byte;
   const uint8_t *p = *data;
-  
+
   do {
     byte = *p++;
     result |= (byte & 0x7f) << shift;
     shift += 7;
-  } 
+  }
   while (byte & 0x80);
-  
+
   *data = p;
-  
+
   return result;
 }
 
 
-/// Read a sleb128 encoded value and advance pointer 
-/// See Variable Length Data in: 
+/// Read a sleb128 encoded value and advance pointer
+/// See Variable Length Data in:
 /// @link http://dwarfstd.org/Dwarf3.pdf @unlink
 /// @param data reference variable holding memory pointer to decode from
 /// @returns decoded value
@@ -401,26 +401,26 @@
   uintptr_t shift = 0;
   unsigned char byte;
   const uint8_t *p = *data;
-  
+
   do {
     byte = *p++;
     result |= (byte & 0x7f) << shift;
     shift += 7;
-  } 
+  }
   while (byte & 0x80);
-  
+
   *data = p;
-  
+
   if ((byte & 0x40) && (shift < (sizeof(result) << 3))) {
     result |= (~0 << shift);
   }
-  
+
   return result;
 }
 
 
-/// Read a pointer encoded value and advance pointer 
-/// See Variable Length Data in: 
+/// Read a pointer encoded value and advance pointer
+/// See Variable Length Data in:
 /// @link http://dwarfstd.org/Dwarf3.pdf @unlink
 /// @param data reference variable holding memory pointer to decode from
 /// @param encoding dwarf encoding type
@@ -428,11 +428,11 @@
 static uintptr_t readEncodedPointer(const uint8_t **data, uint8_t encoding) {
   uintptr_t result = 0;
   const uint8_t *p = *data;
-  
-  if (encoding == llvm::dwarf::DW_EH_PE_omit) 
+
+  if (encoding == llvm::dwarf::DW_EH_PE_omit)
     return(result);
-  
-  // first get value 
+
+  // first get value
   switch (encoding & 0x0F) {
     case llvm::dwarf::DW_EH_PE_absptr:
       result = *((uintptr_t*)p);
@@ -470,15 +470,15 @@
       p += sizeof(int64_t);
       break;
     default:
-      // not supported 
+      // not supported
       abort();
       break;
   }
-  
-  // then add relative offset 
+
+  // then add relative offset
   switch (encoding & 0x70) {
     case llvm::dwarf::DW_EH_PE_absptr:
-      // do nothing 
+      // do nothing
       break;
     case llvm::dwarf::DW_EH_PE_pcrel:
       result += (uintptr_t)(*data);
@@ -488,34 +488,34 @@
     case llvm::dwarf::DW_EH_PE_funcrel:
     case llvm::dwarf::DW_EH_PE_aligned:
     default:
-      // not supported 
+      // not supported
       abort();
       break;
   }
-  
-  // then apply indirection 
+
+  // then apply indirection
   if (encoding & llvm::dwarf::DW_EH_PE_indirect) {
     result = *((uintptr_t*)result);
   }
-  
+
   *data = p;
-  
+
   return result;
 }
 
 
-/// Deals with Dwarf actions matching our type infos 
-/// (OurExceptionType_t instances). Returns whether or not a dwarf emitted 
-/// action matches the supplied exception type. If such a match succeeds, 
-/// the resultAction argument will be set with > 0 index value. Only 
-/// corresponding llvm.eh.selector type info arguments, cleanup arguments 
+/// Deals with Dwarf actions matching our type infos
+/// (OurExceptionType_t instances). Returns whether or not a dwarf emitted
+/// action matches the supplied exception type. If such a match succeeds,
+/// the resultAction argument will be set with > 0 index value. Only
+/// corresponding llvm.eh.selector type info arguments, cleanup arguments
 /// are supported. Filters are not supported.
-/// See Variable Length Data in: 
+/// See Variable Length Data in:
 /// @link http://dwarfstd.org/Dwarf3.pdf @unlink
 /// Also see @link http://refspecs.freestandards.org/abi-eh-1.21.html @unlink
 /// @param resultAction reference variable which will be set with result
 /// @param classInfo our array of type info pointers (to globals)
-/// @param actionEntry index into above type info array or 0 (clean up). 
+/// @param actionEntry index into above type info array or 0 (clean up).
 ///        We do not support filters.
 /// @param exceptionClass exception class (_Unwind_Exception::exception_class)
 ///        of thrown exception.
@@ -523,22 +523,22 @@
 /// @returns whether or not a type info was found. False is returned if only
 ///          a cleanup was found
 static bool handleActionValue(int64_t *resultAction,
-                              struct OurExceptionType_t **classInfo, 
-                              uintptr_t actionEntry, 
-                              uint64_t exceptionClass, 
+                              struct OurExceptionType_t **classInfo,
+                              uintptr_t actionEntry,
+                              uint64_t exceptionClass,
                               struct _Unwind_Exception *exceptionObject) {
   bool ret = false;
-  
-  if (!resultAction || 
-      !exceptionObject || 
+
+  if (!resultAction ||
+      !exceptionObject ||
       (exceptionClass != ourBaseExceptionClass))
     return(ret);
-  
+
   struct OurBaseException_t *excp = (struct OurBaseException_t*)
   (((char*) exceptionObject) + ourBaseFromUnwindOffset);
   struct OurExceptionType_t *excpType = &(excp->type);
   int type = excpType->type;
-  
+
 #ifdef DEBUG
   fprintf(stderr,
           "handleActionValue(...): exceptionObject = <%p>, "
@@ -546,12 +546,12 @@
           exceptionObject,
           excp);
 #endif
-  
+
   const uint8_t *actionPos = (uint8_t*) actionEntry,
   *tempActionPos;
   int64_t typeOffset = 0,
   actionOffset;
-  
+
   for (int i = 0; true; ++i) {
     // Each emitted dwarf action corresponds to a 2 tuple of
     // type info address offset, and action offset to the next
@@ -559,7 +559,7 @@
     typeOffset = readSLEB128(&actionPos);
     tempActionPos = actionPos;
     actionOffset = readSLEB128(&tempActionPos);
-    
+
 #ifdef DEBUG
     fprintf(stderr,
             "handleActionValue(...):typeOffset: <%lld>, "
@@ -567,9 +567,9 @@
             typeOffset,
             actionOffset);
 #endif
-    assert((typeOffset >= 0) && 
+    assert((typeOffset >= 0) &&
            "handleActionValue(...):filters are not supported.");
-    
+
     // Note: A typeOffset == 0 implies that a cleanup llvm.eh.selector
     //       argument has been matched.
     if ((typeOffset > 0) &&
@@ -583,17 +583,17 @@
       ret = true;
       break;
     }
-    
+
 #ifdef DEBUG
     fprintf(stderr,
             "handleActionValue(...):actionValue not found.\n");
 #endif
     if (!actionOffset)
       break;
-    
+
     actionPos += actionOffset;
   }
-  
+
   return(ret);
 }
 
@@ -602,52 +602,52 @@
 /// See @link http://refspecs.freestandards.org/abi-eh-1.21.html @unlink
 /// @param version unsupported (ignored), unwind version
 /// @param lsda language specific data area
-/// @param _Unwind_Action actions minimally supported unwind stage 
+/// @param _Unwind_Action actions minimally supported unwind stage
 ///        (forced specifically not supported)
 /// @param exceptionClass exception class (_Unwind_Exception::exception_class)
 ///        of thrown exception.
 /// @param exceptionObject thrown _Unwind_Exception instance.
 /// @param context unwind system context
-/// @returns minimally supported unwinding control indicator 
-static _Unwind_Reason_Code handleLsda(int version, 
+/// @returns minimally supported unwinding control indicator
+static _Unwind_Reason_Code handleLsda(int version,
                                       const uint8_t *lsda,
                                       _Unwind_Action actions,
-                                      uint64_t exceptionClass, 
+                                      uint64_t exceptionClass,
                                     struct _Unwind_Exception *exceptionObject,
                                       _Unwind_Context_t context) {
   _Unwind_Reason_Code ret = _URC_CONTINUE_UNWIND;
-  
+
   if (!lsda)
     return(ret);
-  
+
 #ifdef DEBUG
-  fprintf(stderr, 
+  fprintf(stderr,
           "handleLsda(...):lsda is non-zero.\n");
 #endif
-  
+
   // Get the current instruction pointer and offset it before next
   // instruction in the current frame which threw the exception.
   uintptr_t pc = _Unwind_GetIP(context)-1;
-  
-  // Get beginning current frame's code (as defined by the 
+
+  // Get beginning current frame's code (as defined by the
   // emitted dwarf code)
   uintptr_t funcStart = _Unwind_GetRegionStart(context);
   uintptr_t pcOffset = pc - funcStart;
   struct OurExceptionType_t **classInfo = NULL;
-  
+
   // Note: See JITDwarfEmitter::EmitExceptionTable(...) for corresponding
   //       dwarf emission
-  
+
   // Parse LSDA header.
   uint8_t lpStartEncoding = *lsda++;
-  
+
   if (lpStartEncoding != llvm::dwarf::DW_EH_PE_omit) {
-    readEncodedPointer(&lsda, lpStartEncoding); 
+    readEncodedPointer(&lsda, lpStartEncoding);
   }
-  
+
   uint8_t ttypeEncoding = *lsda++;
   uintptr_t classInfoOffset;
-  
+
   if (ttypeEncoding != llvm::dwarf::DW_EH_PE_omit) {
     // Calculate type info locations in emitted dwarf code which
     // were flagged by type info arguments to llvm.eh.selector
@@ -655,47 +655,47 @@
     classInfoOffset = readULEB128(&lsda);
     classInfo = (struct OurExceptionType_t**) (lsda + classInfoOffset);
   }
-  
-  // Walk call-site table looking for range that 
-  // includes current PC. 
-  
+
+  // Walk call-site table looking for range that
+  // includes current PC.
+
   uint8_t         callSiteEncoding = *lsda++;
   uint32_t        callSiteTableLength = readULEB128(&lsda);
   const uint8_t   *callSiteTableStart = lsda;
-  const uint8_t   *callSiteTableEnd = callSiteTableStart + 
+  const uint8_t   *callSiteTableEnd = callSiteTableStart +
   callSiteTableLength;
   const uint8_t   *actionTableStart = callSiteTableEnd;
   const uint8_t   *callSitePtr = callSiteTableStart;
-  
+
   bool foreignException = false;
-  
+
   while (callSitePtr < callSiteTableEnd) {
-    uintptr_t start = readEncodedPointer(&callSitePtr, 
+    uintptr_t start = readEncodedPointer(&callSitePtr,
                                          callSiteEncoding);
-    uintptr_t length = readEncodedPointer(&callSitePtr, 
+    uintptr_t length = readEncodedPointer(&callSitePtr,
                                           callSiteEncoding);
-    uintptr_t landingPad = readEncodedPointer(&callSitePtr, 
+    uintptr_t landingPad = readEncodedPointer(&callSitePtr,
                                               callSiteEncoding);
-    
+
     // Note: Action value
     uintptr_t actionEntry = readULEB128(&callSitePtr);
-    
+
     if (exceptionClass != ourBaseExceptionClass) {
       // We have been notified of a foreign exception being thrown,
       // and we therefore need to execute cleanup landing pads
       actionEntry = 0;
       foreignException = true;
     }
-    
+
     if (landingPad == 0) {
 #ifdef DEBUG
       fprintf(stderr,
               "handleLsda(...): No landing pad found.\n");
 #endif
-      
+
       continue; // no landing pad for this entry
     }
-    
+
     if (actionEntry) {
       actionEntry += ((uintptr_t) actionTableStart) - 1;
     }
@@ -705,55 +705,55 @@
               "handleLsda(...):No action table found.\n");
 #endif
     }
-    
+
     bool exceptionMatched = false;
-    
+
     if ((start <= pcOffset) && (pcOffset < (start + length))) {
 #ifdef DEBUG
       fprintf(stderr,
               "handleLsda(...): Landing pad found.\n");
 #endif
       int64_t actionValue = 0;
-      
+
       if (actionEntry) {
         exceptionMatched = handleActionValue(&actionValue,
-                                             classInfo, 
-                                             actionEntry, 
-                                             exceptionClass, 
+                                             classInfo,
+                                             actionEntry,
+                                             exceptionClass,
                                              exceptionObject);
       }
-      
+
       if (!(actions & _UA_SEARCH_PHASE)) {
 #ifdef DEBUG
         fprintf(stderr,
                 "handleLsda(...): installed landing pad "
                 "context.\n");
 #endif
-        
+
         // Found landing pad for the PC.
-        // Set Instruction Pointer to so we re-enter function 
-        // at landing pad. The landing pad is created by the 
+        // Set Instruction Pointer to so we re-enter function
+        // at landing pad. The landing pad is created by the
         // compiler to take two parameters in registers.
-        _Unwind_SetGR(context, 
-                      __builtin_eh_return_data_regno(0), 
+        _Unwind_SetGR(context,
+                      __builtin_eh_return_data_regno(0),
                       (uintptr_t)exceptionObject);
-        
+
         // Note: this virtual register directly corresponds
         //       to the return of the llvm.eh.selector intrinsic
         if (!actionEntry || !exceptionMatched) {
           // We indicate cleanup only
-          _Unwind_SetGR(context, 
-                        __builtin_eh_return_data_regno(1), 
+          _Unwind_SetGR(context,
+                        __builtin_eh_return_data_regno(1),
                         0);
         }
         else {
           // Matched type info index of llvm.eh.selector intrinsic
           // passed here.
-          _Unwind_SetGR(context, 
-                        __builtin_eh_return_data_regno(1), 
+          _Unwind_SetGR(context,
+                        __builtin_eh_return_data_regno(1),
                         actionValue);
         }
-        
+
         // To execute landing pad set here
         _Unwind_SetIP(context, funcStart + landingPad);
         ret = _URC_INSTALL_CONTEXT;
@@ -767,19 +767,19 @@
       }
       else {
         // Note: Only non-clean up handlers are marked as
-        //       found. Otherwise the clean up handlers will be 
-        //       re-found and executed during the clean up 
+        //       found. Otherwise the clean up handlers will be
+        //       re-found and executed during the clean up
         //       phase.
 #ifdef DEBUG
         fprintf(stderr,
                 "handleLsda(...): cleanup handler found.\n");
 #endif
       }
-      
+
       break;
     }
   }
-  
+
   return(ret);
 }
 
@@ -788,23 +788,23 @@
 /// dwarf unwind info block. Again see: JITDwarfEmitter.cpp.
 /// See @link http://refspecs.freestandards.org/abi-eh-1.21.html @unlink
 /// @param version unsupported (ignored), unwind version
-/// @param _Unwind_Action actions minimally supported unwind stage 
+/// @param _Unwind_Action actions minimally supported unwind stage
 ///        (forced specifically not supported)
 /// @param exceptionClass exception class (_Unwind_Exception::exception_class)
 ///        of thrown exception.
 /// @param exceptionObject thrown _Unwind_Exception instance.
 /// @param context unwind system context
-/// @returns minimally supported unwinding control indicator 
-_Unwind_Reason_Code ourPersonality(int version, 
+/// @returns minimally supported unwinding control indicator
+_Unwind_Reason_Code ourPersonality(int version,
                                    _Unwind_Action actions,
-                                   uint64_t exceptionClass, 
+                                   uint64_t exceptionClass,
                                    struct _Unwind_Exception *exceptionObject,
                                    _Unwind_Context_t context) {
 #ifdef DEBUG
-  fprintf(stderr, 
+  fprintf(stderr,
           "We are in ourPersonality(...):actions is <%d>.\n",
           actions);
-  
+
   if (actions & _UA_SEARCH_PHASE) {
     fprintf(stderr, "ourPersonality(...):In search phase.\n");
   }
@@ -812,15 +812,15 @@
     fprintf(stderr, "ourPersonality(...):In non-search phase.\n");
   }
 #endif
-  
+
   const uint8_t *lsda = _Unwind_GetLanguageSpecificData(context);
-  
+
 #ifdef DEBUG
-  fprintf(stderr, 
+  fprintf(stderr,
           "ourPersonality(...):lsda = <%p>.\n",
           lsda);
 #endif
-  
+
   // The real work of the personality function is captured here
   return(handleLsda(version,
                     lsda,
@@ -841,12 +841,12 @@
 uint64_t genClass(const unsigned char classChars[], size_t classCharsSize)
 {
   uint64_t ret = classChars[0];
-  
+
   for (unsigned i = 1; i < classCharsSize; ++i) {
     ret <<= 8;
     ret += classChars[i];
   }
-  
+
   return(ret);
 }
 
@@ -865,37 +865,37 @@
 /// @param module code for module instance
 /// @param builder builder instance
 /// @param toPrint string to print
-/// @param useGlobal A value of true (default) indicates a GlobalValue is 
-///        generated, and is used to hold the constant string. A value of 
-///        false indicates that the constant string will be stored on the 
+/// @param useGlobal A value of true (default) indicates a GlobalValue is
+///        generated, and is used to hold the constant string. A value of
+///        false indicates that the constant string will be stored on the
 ///        stack.
-void generateStringPrint(llvm::LLVMContext &context, 
+void generateStringPrint(llvm::LLVMContext &context,
                          llvm::Module &module,
-                         llvm::IRBuilder<> &builder, 
+                         llvm::IRBuilder<> &builder,
                          std::string toPrint,
                          bool useGlobal = true) {
   llvm::Function *printFunct = module.getFunction("printStr");
-  
+
   llvm::Value *stringVar;
-  llvm::Constant *stringConstant = 
+  llvm::Constant *stringConstant =
   llvm::ConstantDataArray::getString(context, toPrint);
-  
+
   if (useGlobal) {
     // Note: Does not work without allocation
-    stringVar = 
-    new llvm::GlobalVariable(module, 
+    stringVar =
+    new llvm::GlobalVariable(module,
                              stringConstant->getType(),
-                             true, 
-                             llvm::GlobalValue::LinkerPrivateLinkage, 
-                             stringConstant, 
+                             true,
+                             llvm::GlobalValue::LinkerPrivateLinkage,
+                             stringConstant,
                              "");
   }
   else {
     stringVar = builder.CreateAlloca(stringConstant->getType());
     builder.CreateStore(stringConstant, stringVar);
   }
-  
-  llvm::Value *cast = builder.CreatePointerCast(stringVar, 
+
+  llvm::Value *cast = builder.CreatePointerCast(stringVar,
                                                 builder.getInt8PtrTy());
   builder.CreateCall(printFunct, cast);
 }
@@ -909,49 +909,49 @@
 /// @param printFunct function used to "print" integer
 /// @param toPrint string to print
 /// @param format printf like formating string for print
-/// @param useGlobal A value of true (default) indicates a GlobalValue is 
-///        generated, and is used to hold the constant string. A value of 
-///        false indicates that the constant string will be stored on the 
+/// @param useGlobal A value of true (default) indicates a GlobalValue is
+///        generated, and is used to hold the constant string. A value of
+///        false indicates that the constant string will be stored on the
 ///        stack.
-void generateIntegerPrint(llvm::LLVMContext &context, 
+void generateIntegerPrint(llvm::LLVMContext &context,
                           llvm::Module &module,
-                          llvm::IRBuilder<> &builder, 
+                          llvm::IRBuilder<> &builder,
                           llvm::Function &printFunct,
                           llvm::Value &toPrint,
-                          std::string format, 
+                          std::string format,
                           bool useGlobal = true) {
   llvm::Constant *stringConstant =
     llvm::ConstantDataArray::getString(context, format);
   llvm::Value *stringVar;
-  
+
   if (useGlobal) {
     // Note: Does not seem to work without allocation
-    stringVar = 
-    new llvm::GlobalVariable(module, 
+    stringVar =
+    new llvm::GlobalVariable(module,
                              stringConstant->getType(),
-                             true, 
-                             llvm::GlobalValue::LinkerPrivateLinkage, 
-                             stringConstant, 
+                             true,
+                             llvm::GlobalValue::LinkerPrivateLinkage,
+                             stringConstant,
                              "");
   }
   else {
     stringVar = builder.CreateAlloca(stringConstant->getType());
     builder.CreateStore(stringConstant, stringVar);
   }
-  
-  llvm::Value *cast = builder.CreateBitCast(stringVar, 
+
+  llvm::Value *cast = builder.CreateBitCast(stringVar,
                                             builder.getInt8PtrTy());
   builder.CreateCall2(&printFunct, &toPrint, cast);
 }
 
 
-/// Generates code to handle finally block type semantics: always runs 
-/// regardless of whether a thrown exception is passing through or the 
-/// parent function is simply exiting. In addition to printing some state 
-/// to stderr, this code will resume the exception handling--runs the 
-/// unwind resume block, if the exception has not been previously caught 
-/// by a catch clause, and will otherwise execute the end block (terminator 
-/// block). In addition this function creates the corresponding function's 
+/// Generates code to handle finally block type semantics: always runs
+/// regardless of whether a thrown exception is passing through or the
+/// parent function is simply exiting. In addition to printing some state
+/// to stderr, this code will resume the exception handling--runs the
+/// unwind resume block, if the exception has not been previously caught
+/// by a catch clause, and will otherwise execute the end block (terminator
+/// block). In addition this function creates the corresponding function's
 /// stack storage for the exception pointer and catch flag status.
 /// @param context llvm context
 /// @param module code for module instance
@@ -965,9 +965,9 @@
 /// @param exceptionStorage reference to exception pointer storage
 /// @param caughtResultStorage reference to landingpad result storage
 /// @returns newly created block
-static llvm::BasicBlock *createFinallyBlock(llvm::LLVMContext &context, 
-                                            llvm::Module &module, 
-                                            llvm::IRBuilder<> &builder, 
+static llvm::BasicBlock *createFinallyBlock(llvm::LLVMContext &context,
+                                            llvm::Module &module,
+                                            llvm::IRBuilder<> &builder,
                                             llvm::Function &toAddTo,
                                             std::string &blockName,
                                             std::string &functionId,
@@ -976,21 +976,21 @@
                                             llvm::Value **exceptionCaughtFlag,
                                             llvm::Value **exceptionStorage,
                                             llvm::Value **caughtResultStorage) {
-  assert(exceptionCaughtFlag && 
+  assert(exceptionCaughtFlag &&
          "ExceptionDemo::createFinallyBlock(...):exceptionCaughtFlag "
          "is NULL");
-  assert(exceptionStorage && 
+  assert(exceptionStorage &&
          "ExceptionDemo::createFinallyBlock(...):exceptionStorage "
          "is NULL");
-  assert(caughtResultStorage && 
+  assert(caughtResultStorage &&
          "ExceptionDemo::createFinallyBlock(...):caughtResultStorage "
          "is NULL");
-  
+
   *exceptionCaughtFlag = createEntryBlockAlloca(toAddTo,
                                          "exceptionCaught",
                                          ourExceptionNotThrownState->getType(),
                                          ourExceptionNotThrownState);
-  
+
   llvm::PointerType *exceptionStorageType = builder.getInt8PtrTy();
   *exceptionStorage = createEntryBlockAlloca(toAddTo,
                                              "exceptionStorage",
@@ -1002,35 +1002,35 @@
                                               ourCaughtResultType,
                                               llvm::ConstantAggregateZero::get(
                                                 ourCaughtResultType));
-  
+
   llvm::BasicBlock *ret = llvm::BasicBlock::Create(context,
                                                    blockName,
                                                    &toAddTo);
-  
+
   builder.SetInsertPoint(ret);
-  
+
   std::ostringstream bufferToPrint;
   bufferToPrint << "Gen: Executing finally block "
     << blockName << " in " << functionId << "\n";
-  generateStringPrint(context, 
-                      module, 
-                      builder, 
+  generateStringPrint(context,
+                      module,
+                      builder,
                       bufferToPrint.str(),
                       USE_GLOBAL_STR_CONSTS);
-  
+
   llvm::SwitchInst *theSwitch = builder.CreateSwitch(builder.CreateLoad(
-                                                       *exceptionCaughtFlag), 
+                                                       *exceptionCaughtFlag),
                                                      &terminatorBlock,
                                                      2);
   theSwitch->addCase(ourExceptionCaughtState, &terminatorBlock);
   theSwitch->addCase(ourExceptionThrownState, &unwindResumeBlock);
-  
+
   return(ret);
 }
 
 
 /// Generates catch block semantics which print a string to indicate type of
-/// catch executed, sets an exception caught flag, and executes passed in 
+/// catch executed, sets an exception caught flag, and executes passed in
 /// end block (terminator block).
 /// @param context llvm context
 /// @param module code for module instance
@@ -1041,52 +1041,52 @@
 /// @param terminatorBlock terminator "end" block
 /// @param exceptionCaughtFlag exception caught/thrown status
 /// @returns newly created block
-static llvm::BasicBlock *createCatchBlock(llvm::LLVMContext &context, 
-                                          llvm::Module &module, 
-                                          llvm::IRBuilder<> &builder, 
+static llvm::BasicBlock *createCatchBlock(llvm::LLVMContext &context,
+                                          llvm::Module &module,
+                                          llvm::IRBuilder<> &builder,
                                           llvm::Function &toAddTo,
                                           std::string &blockName,
                                           std::string &functionId,
                                           llvm::BasicBlock &terminatorBlock,
                                           llvm::Value &exceptionCaughtFlag) {
-  
+
   llvm::BasicBlock *ret = llvm::BasicBlock::Create(context,
                                                    blockName,
                                                    &toAddTo);
-  
+
   builder.SetInsertPoint(ret);
-  
+
   std::ostringstream bufferToPrint;
   bufferToPrint << "Gen: Executing catch block "
   << blockName
   << " in "
   << functionId
   << std::endl;
-  generateStringPrint(context, 
-                      module, 
-                      builder, 
+  generateStringPrint(context,
+                      module,
+                      builder,
                       bufferToPrint.str(),
                       USE_GLOBAL_STR_CONSTS);
   builder.CreateStore(ourExceptionCaughtState, &exceptionCaughtFlag);
   builder.CreateBr(&terminatorBlock);
-  
+
   return(ret);
 }
 
 
-/// Generates a function which invokes a function (toInvoke) and, whose 
-/// unwind block will "catch" the type info types correspondingly held in the 
-/// exceptionTypesToCatch argument. If the toInvoke function throws an 
-/// exception which does not match any type info types contained in 
-/// exceptionTypesToCatch, the generated code will call _Unwind_Resume 
-/// with the raised exception. On the other hand the generated code will 
+/// Generates a function which invokes a function (toInvoke) and, whose
+/// unwind block will "catch" the type info types correspondingly held in the
+/// exceptionTypesToCatch argument. If the toInvoke function throws an
+/// exception which does not match any type info types contained in
+/// exceptionTypesToCatch, the generated code will call _Unwind_Resume
+/// with the raised exception. On the other hand the generated code will
 /// normally exit if the toInvoke function does not throw an exception.
-/// The generated "finally" block is always run regardless of the cause of 
+/// The generated "finally" block is always run regardless of the cause of
 /// the generated function exit.
 /// The generated function is returned after being verified.
 /// @param module code for module instance
 /// @param builder builder instance
-/// @param fpm a function pass manager holding optional IR to IR 
+/// @param fpm a function pass manager holding optional IR to IR
 ///        transformations
 /// @param toInvoke inner function to invoke
 /// @param ourId id used to printing purposes
@@ -1094,76 +1094,76 @@
 /// @param exceptionTypesToCatch array of type info types to "catch"
 /// @returns generated function
 static
-llvm::Function *createCatchWrappedInvokeFunction(llvm::Module &module, 
-                                             llvm::IRBuilder<> &builder, 
+llvm::Function *createCatchWrappedInvokeFunction(llvm::Module &module,
+                                             llvm::IRBuilder<> &builder,
                                              llvm::FunctionPassManager &fpm,
                                              llvm::Function &toInvoke,
                                              std::string ourId,
                                              unsigned numExceptionsToCatch,
                                              unsigned exceptionTypesToCatch[]) {
-  
+
   llvm::LLVMContext &context = module.getContext();
   llvm::Function *toPrint32Int = module.getFunction("print32Int");
-  
+
   ArgTypes argTypes;
   argTypes.push_back(builder.getInt32Ty());
-  
+
   ArgNames argNames;
   argNames.push_back("exceptTypeToThrow");
-  
-  llvm::Function *ret = createFunction(module, 
+
+  llvm::Function *ret = createFunction(module,
                                        builder.getVoidTy(),
-                                       argTypes, 
-                                       argNames, 
+                                       argTypes,
+                                       argNames,
                                        ourId,
-                                       llvm::Function::ExternalLinkage, 
-                                       false, 
+                                       llvm::Function::ExternalLinkage,
+                                       false,
                                        false);
-  
+
   // Block which calls invoke
   llvm::BasicBlock *entryBlock = llvm::BasicBlock::Create(context,
-                                                          "entry", 
+                                                          "entry",
                                                           ret);
   // Normal block for invoke
-  llvm::BasicBlock *normalBlock = llvm::BasicBlock::Create(context, 
-                                                           "normal", 
+  llvm::BasicBlock *normalBlock = llvm::BasicBlock::Create(context,
+                                                           "normal",
                                                            ret);
   // Unwind block for invoke
-  llvm::BasicBlock *exceptionBlock = llvm::BasicBlock::Create(context, 
-                                                              "exception", 
+  llvm::BasicBlock *exceptionBlock = llvm::BasicBlock::Create(context,
+                                                              "exception",
                                                               ret);
-  
+
   // Block which routes exception to correct catch handler block
-  llvm::BasicBlock *exceptionRouteBlock = llvm::BasicBlock::Create(context, 
-                                                             "exceptionRoute", 
+  llvm::BasicBlock *exceptionRouteBlock = llvm::BasicBlock::Create(context,
+                                                             "exceptionRoute",
                                                              ret);
-  
+
   // Foreign exception handler
-  llvm::BasicBlock *externalExceptionBlock = llvm::BasicBlock::Create(context, 
-                                                          "externalException", 
+  llvm::BasicBlock *externalExceptionBlock = llvm::BasicBlock::Create(context,
+                                                          "externalException",
                                                           ret);
-  
+
   // Block which calls _Unwind_Resume
-  llvm::BasicBlock *unwindResumeBlock = llvm::BasicBlock::Create(context, 
-                                                               "unwindResume", 
+  llvm::BasicBlock *unwindResumeBlock = llvm::BasicBlock::Create(context,
+                                                               "unwindResume",
                                                                ret);
-  
+
   // Clean up block which delete exception if needed
   llvm::BasicBlock *endBlock = llvm::BasicBlock::Create(context, "end", ret);
-  
+
   std::string nextName;
   std::vector<llvm::BasicBlock*> catchBlocks(numExceptionsToCatch);
   llvm::Value *exceptionCaughtFlag = NULL;
   llvm::Value *exceptionStorage = NULL;
   llvm::Value *caughtResultStorage = NULL;
-  
-  // Finally block which will branch to unwindResumeBlock if 
+
+  // Finally block which will branch to unwindResumeBlock if
   // exception is not caught. Initializes/allocates stack locations.
-  llvm::BasicBlock *finallyBlock = createFinallyBlock(context, 
-                                                      module, 
-                                                      builder, 
-                                                      *ret, 
-                                                      nextName = "finally", 
+  llvm::BasicBlock *finallyBlock = createFinallyBlock(context,
+                                                      module,
+                                                      builder,
+                                                      *ret,
+                                                      nextName = "finally",
                                                       ourId,
                                                       *endBlock,
                                                       *unwindResumeBlock,
@@ -1171,74 +1171,74 @@
                                                       &exceptionStorage,
                                                       &caughtResultStorage
                                                       );
-  
+
   for (unsigned i = 0; i < numExceptionsToCatch; ++i) {
     nextName = ourTypeInfoNames[exceptionTypesToCatch[i]];
-    
+
     // One catch block per type info to be caught
-    catchBlocks[i] = createCatchBlock(context, 
-                                      module, 
-                                      builder, 
+    catchBlocks[i] = createCatchBlock(context,
+                                      module,
+                                      builder,
                                       *ret,
-                                      nextName, 
+                                      nextName,
                                       ourId,
                                       *finallyBlock,
                                       *exceptionCaughtFlag);
   }
-  
+
   // Entry Block
-  
+
   builder.SetInsertPoint(entryBlock);
-  
+
   std::vector<llvm::Value*> args;
   args.push_back(namedValues["exceptTypeToThrow"]);
-  builder.CreateInvoke(&toInvoke, 
-                       normalBlock, 
-                       exceptionBlock, 
+  builder.CreateInvoke(&toInvoke,
+                       normalBlock,
+                       exceptionBlock,
                        args);
-  
+
   // End Block
-  
+
   builder.SetInsertPoint(endBlock);
-  
-  generateStringPrint(context, 
+
+  generateStringPrint(context,
                       module,
-                      builder, 
+                      builder,
                       "Gen: In end block: exiting in " + ourId + ".\n",
                       USE_GLOBAL_STR_CONSTS);
   llvm::Function *deleteOurException = module.getFunction("deleteOurException");
-  
+
   // Note: function handles NULL exceptions
-  builder.CreateCall(deleteOurException, 
+  builder.CreateCall(deleteOurException,
                      builder.CreateLoad(exceptionStorage));
   builder.CreateRetVoid();
-  
+
   // Normal Block
-  
+
   builder.SetInsertPoint(normalBlock);
-  
-  generateStringPrint(context, 
+
+  generateStringPrint(context,
                       module,
-                      builder, 
+                      builder,
                       "Gen: No exception in " + ourId + "!\n",
                       USE_GLOBAL_STR_CONSTS);
-  
+
   // Finally block is always called
   builder.CreateBr(finallyBlock);
-  
+
   // Unwind Resume Block
-  
+
   builder.SetInsertPoint(unwindResumeBlock);
-  
+
   builder.CreateResume(builder.CreateLoad(caughtResultStorage));
-  
+
   // Exception Block
-  
+
   builder.SetInsertPoint(exceptionBlock);
-  
+
   llvm::Function *personality = module.getFunction("ourPersonality");
-  
-  llvm::LandingPadInst *caughtResult = 
+
+  llvm::LandingPadInst *caughtResult =
     builder.CreateLandingPad(ourCaughtResultType,
                              personality,
                              numExceptionsToCatch,
@@ -1255,48 +1255,48 @@
   llvm::Value *unwindException = builder.CreateExtractValue(caughtResult, 0);
   llvm::Value *retTypeInfoIndex = builder.CreateExtractValue(caughtResult, 1);
 
-  // FIXME: Redundant storage which, beyond utilizing value of 
-  //        caughtResultStore for unwindException storage, may be alleviated 
+  // FIXME: Redundant storage which, beyond utilizing value of
+  //        caughtResultStore for unwindException storage, may be alleviated
   //        altogether with a block rearrangement
   builder.CreateStore(caughtResult, caughtResultStorage);
   builder.CreateStore(unwindException, exceptionStorage);
   builder.CreateStore(ourExceptionThrownState, exceptionCaughtFlag);
-  
-  // Retrieve exception_class member from thrown exception 
+
+  // Retrieve exception_class member from thrown exception
   // (_Unwind_Exception instance). This member tells us whether or not
   // the exception is foreign.
-  llvm::Value *unwindExceptionClass = 
+  llvm::Value *unwindExceptionClass =
     builder.CreateLoad(builder.CreateStructGEP(
-             builder.CreatePointerCast(unwindException, 
-                                       ourUnwindExceptionType->getPointerTo()), 
+             builder.CreatePointerCast(unwindException,
+                                       ourUnwindExceptionType->getPointerTo()),
                                                0));
-  
+
   // Branch to the externalExceptionBlock if the exception is foreign or
   // to a catch router if not. Either way the finally block will be run.
   builder.CreateCondBr(builder.CreateICmpEQ(unwindExceptionClass,
-                            llvm::ConstantInt::get(builder.getInt64Ty(), 
+                            llvm::ConstantInt::get(builder.getInt64Ty(),
                                                    ourBaseExceptionClass)),
                        exceptionRouteBlock,
                        externalExceptionBlock);
-  
+
   // External Exception Block
-  
+
   builder.SetInsertPoint(externalExceptionBlock);
-  
-  generateStringPrint(context, 
+
+  generateStringPrint(context,
                       module,
-                      builder, 
+                      builder,
                       "Gen: Foreign exception received.\n",
                       USE_GLOBAL_STR_CONSTS);
-  
+
   // Branch to the finally block
   builder.CreateBr(finallyBlock);
-  
+
   // Exception Route Block
-  
+
   builder.SetInsertPoint(exceptionRouteBlock);
-  
-  // Casts exception pointer (_Unwind_Exception instance) to parent 
+
+  // Casts exception pointer (_Unwind_Exception instance) to parent
   // (OurException instance).
   //
   // Note: ourBaseFromUnwindOffset is usually negative
@@ -1304,34 +1304,34 @@
                                   builder.CreateConstGEP1_64(unwindException,
                                                        ourBaseFromUnwindOffset),
                                   ourExceptionType->getPointerTo());
-  
+
   // Retrieve thrown exception type info type
   //
   // Note: Index is not relative to pointer but instead to structure
   //       unlike a true getelementptr (GEP) instruction
   typeInfoThrown = builder.CreateStructGEP(typeInfoThrown, 0);
-  
-  llvm::Value *typeInfoThrownType = 
+
+  llvm::Value *typeInfoThrownType =
   builder.CreateStructGEP(typeInfoThrown, 0);
-  
-  generateIntegerPrint(context, 
+
+  generateIntegerPrint(context,
                        module,
-                       builder, 
-                       *toPrint32Int, 
+                       builder,
+                       *toPrint32Int,
                        *(builder.CreateLoad(typeInfoThrownType)),
-                       "Gen: Exception type <%d> received (stack unwound) " 
-                       " in " + 
-                       ourId + 
+                       "Gen: Exception type <%d> received (stack unwound) "
+                       " in " +
+                       ourId +
                        ".\n",
                        USE_GLOBAL_STR_CONSTS);
-  
+
   // Route to matched type info catch block or run cleanup finally block
-  llvm::SwitchInst *switchToCatchBlock = builder.CreateSwitch(retTypeInfoIndex, 
-                                                          finallyBlock, 
+  llvm::SwitchInst *switchToCatchBlock = builder.CreateSwitch(retTypeInfoIndex,
+                                                          finallyBlock,
                                                           numExceptionsToCatch);
-  
+
   unsigned nextTypeToCatch;
-  
+
   for (unsigned i = 1; i <= numExceptionsToCatch; ++i) {
     nextTypeToCatch = i - 1;
     switchToCatchBlock->addCase(llvm::ConstantInt::get(
@@ -1341,18 +1341,18 @@
 
   llvm::verifyFunction(*ret);
   fpm.run(*ret);
-  
+
   return(ret);
 }
 
 
 /// Generates function which throws either an exception matched to a runtime
-/// determined type info type (argument to generated function), or if this 
-/// runtime value matches nativeThrowType, throws a foreign exception by 
+/// determined type info type (argument to generated function), or if this
+/// runtime value matches nativeThrowType, throws a foreign exception by
 /// calling nativeThrowFunct.
 /// @param module code for module instance
 /// @param builder builder instance
-/// @param fpm a function pass manager holding optional IR to IR 
+/// @param fpm a function pass manager holding optional IR to IR
 ///        transformations
 /// @param ourId id used to printing purposes
 /// @param nativeThrowType a runtime argument of this value results in
@@ -1361,8 +1361,8 @@
 ///        if the above nativeThrowType matches generated function's arg.
 /// @returns generated function
 static
-llvm::Function *createThrowExceptionFunction(llvm::Module &module, 
-                                             llvm::IRBuilder<> &builder, 
+llvm::Function *createThrowExceptionFunction(llvm::Module &module,
+                                             llvm::IRBuilder<> &builder,
                                              llvm::FunctionPassManager &fpm,
                                              std::string ourId,
                                              int32_t nativeThrowType,
@@ -1373,7 +1373,7 @@
   unwindArgTypes.push_back(builder.getInt32Ty());
   ArgNames unwindArgNames;
   unwindArgNames.push_back("exceptTypeToThrow");
-  
+
   llvm::Function *ret = createFunction(module,
                                        builder.getVoidTy(),
                                        unwindArgTypes,
@@ -1382,88 +1382,88 @@
                                        llvm::Function::ExternalLinkage,
                                        false,
                                        false);
-  
+
   // Throws either one of our exception or a native C++ exception depending
   // on a runtime argument value containing a type info type.
   llvm::BasicBlock *entryBlock = llvm::BasicBlock::Create(context,
-                                                          "entry", 
+                                                          "entry",
                                                           ret);
   // Throws a foreign exception
   llvm::BasicBlock *nativeThrowBlock = llvm::BasicBlock::Create(context,
-                                                                "nativeThrow", 
+                                                                "nativeThrow",
                                                                 ret);
   // Throws one of our Exceptions
   llvm::BasicBlock *generatedThrowBlock = llvm::BasicBlock::Create(context,
-                                                             "generatedThrow", 
+                                                             "generatedThrow",
                                                              ret);
   // Retrieved runtime type info type to throw
   llvm::Value *exceptionType = namedValues["exceptTypeToThrow"];
-  
+
   // nativeThrowBlock block
-  
+
   builder.SetInsertPoint(nativeThrowBlock);
-  
+
   // Throws foreign exception
   builder.CreateCall(&nativeThrowFunct, exceptionType);
   builder.CreateUnreachable();
-  
+
   // entry block
-  
+
   builder.SetInsertPoint(entryBlock);
-  
+
   llvm::Function *toPrint32Int = module.getFunction("print32Int");
-  generateIntegerPrint(context, 
+  generateIntegerPrint(context,
                        module,
-                       builder, 
-                       *toPrint32Int, 
-                       *exceptionType, 
-                       "\nGen: About to throw exception type <%d> in " + 
-                       ourId + 
+                       builder,
+                       *toPrint32Int,
+                       *exceptionType,
+                       "\nGen: About to throw exception type <%d> in " +
+                       ourId +
                        ".\n",
                        USE_GLOBAL_STR_CONSTS);
-  
+
   // Switches on runtime type info type value to determine whether or not
-  // a foreign exception is thrown. Defaults to throwing one of our 
+  // a foreign exception is thrown. Defaults to throwing one of our
   // generated exceptions.
   llvm::SwitchInst *theSwitch = builder.CreateSwitch(exceptionType,
                                                      generatedThrowBlock,
                                                      1);
-  
-  theSwitch->addCase(llvm::ConstantInt::get(llvm::Type::getInt32Ty(context), 
+
+  theSwitch->addCase(llvm::ConstantInt::get(llvm::Type::getInt32Ty(context),
                                             nativeThrowType),
                      nativeThrowBlock);
-  
+
   // generatedThrow block
-  
+
   builder.SetInsertPoint(generatedThrowBlock);
-  
+
   llvm::Function *createOurException = module.getFunction("createOurException");
   llvm::Function *raiseOurException = module.getFunction(
                                         "_Unwind_RaiseException");
-  
+
   // Creates exception to throw with runtime type info type.
-  llvm::Value *exception = builder.CreateCall(createOurException, 
+  llvm::Value *exception = builder.CreateCall(createOurException,
                                               namedValues["exceptTypeToThrow"]);
-  
+
   // Throw generated Exception
   builder.CreateCall(raiseOurException, exception);
   builder.CreateUnreachable();
-  
+
   llvm::verifyFunction(*ret);
   fpm.run(*ret);
-  
+
   return(ret);
 }
 
 static void createStandardUtilityFunctions(unsigned numTypeInfos,
-                                           llvm::Module &module, 
+                                           llvm::Module &module,
                                            llvm::IRBuilder<> &builder);
 
-/// Creates test code by generating and organizing these functions into the 
+/// Creates test code by generating and organizing these functions into the
 /// test case. The test case consists of an outer function setup to invoke
-/// an inner function within an environment having multiple catch and single 
+/// an inner function within an environment having multiple catch and single
 /// finally blocks. This inner function is also setup to invoke a throw
-/// function within an evironment similar in nature to the outer function's 
+/// function within an evironment similar in nature to the outer function's
 /// catch and finally blocks. Each of these two functions catch mutually
 /// exclusive subsets (even or odd) of the type info types configured
 /// for this this. All generated functions have a runtime argument which
@@ -1474,26 +1474,26 @@
 /// a supplied a function which in turn will throw a foreign exception.
 /// @param module code for module instance
 /// @param builder builder instance
-/// @param fpm a function pass manager holding optional IR to IR 
+/// @param fpm a function pass manager holding optional IR to IR
 ///        transformations
 /// @param nativeThrowFunctName name of external function which will throw
 ///        a foreign exception
 /// @returns outermost generated test function.
-llvm::Function *createUnwindExceptionTest(llvm::Module &module, 
-                                          llvm::IRBuilder<> &builder, 
+llvm::Function *createUnwindExceptionTest(llvm::Module &module,
+                                          llvm::IRBuilder<> &builder,
                                           llvm::FunctionPassManager &fpm,
                                           std::string nativeThrowFunctName) {
   // Number of type infos to generate
   unsigned numTypeInfos = 6;
-  
+
   // Initialze intrisics and external functions to use along with exception
   // and type info globals.
   createStandardUtilityFunctions(numTypeInfos,
                                  module,
                                  builder);
   llvm::Function *nativeThrowFunct = module.getFunction(nativeThrowFunctName);
-  
-  // Create exception throw function using the value ~0 to cause 
+
+  // Create exception throw function using the value ~0 to cause
   // foreign exceptions to be thrown.
   llvm::Function *throwFunct = createThrowExceptionFunction(module,
                                                             builder,
@@ -1503,9 +1503,9 @@
                                                             *nativeThrowFunct);
   // Inner function will catch even type infos
   unsigned innerExceptionTypesToCatch[] = {6, 2, 4};
-  size_t numExceptionTypesToCatch = sizeof(innerExceptionTypesToCatch) / 
+  size_t numExceptionTypesToCatch = sizeof(innerExceptionTypesToCatch) /
                                     sizeof(unsigned);
-  
+
   // Generate inner function.
   llvm::Function *innerCatchFunct = createCatchWrappedInvokeFunction(module,
                                                     builder,
@@ -1514,12 +1514,12 @@
                                                     "innerCatchFunct",
                                                     numExceptionTypesToCatch,
                                                     innerExceptionTypesToCatch);
-  
+
   // Outer function will catch odd type infos
   unsigned outerExceptionTypesToCatch[] = {3, 1, 5};
-  numExceptionTypesToCatch = sizeof(outerExceptionTypesToCatch) / 
+  numExceptionTypesToCatch = sizeof(outerExceptionTypesToCatch) /
   sizeof(unsigned);
-  
+
   // Generate outer function
   llvm::Function *outerCatchFunct = createCatchWrappedInvokeFunction(module,
                                                     builder,
@@ -1528,7 +1528,7 @@
                                                     "outerCatchFunct",
                                                     numExceptionTypesToCatch,
                                                     outerExceptionTypesToCatch);
-  
+
   // Return outer function to run
   return(outerCatchFunct);
 }
@@ -1539,15 +1539,15 @@
 public:
   OurCppRunException(const std::string reason) :
   std::runtime_error(reason) {}
-  
+
   OurCppRunException (const OurCppRunException &toCopy) :
   std::runtime_error(toCopy) {}
-  
+
   OurCppRunException &operator = (const OurCppRunException &toCopy) {
     return(reinterpret_cast<OurCppRunException&>(
                                  std::runtime_error::operator=(toCopy)));
   }
-  
+
   ~OurCppRunException (void) throw () {}
 };
 
@@ -1562,7 +1562,7 @@
 
 typedef void (*OurExceptionThrowFunctType) (int32_t typeToThrow);
 
-/// This is a test harness which runs test by executing generated 
+/// This is a test harness which runs test by executing generated
 /// function with a type info type to throw. Harness wraps the execution
 /// of generated function in a C++ try catch clause.
 /// @param engine execution engine to use for executing generated function.
@@ -1572,15 +1572,15 @@
 /// @param typeToThrow type info type of generated exception to throw, or
 ///        indicator to cause foreign exception to be thrown.
 static
-void runExceptionThrow(llvm::ExecutionEngine *engine, 
-                       llvm::Function *function, 
+void runExceptionThrow(llvm::ExecutionEngine *engine,
+                       llvm::Function *function,
                        int32_t typeToThrow) {
-  
+
   // Find test's function pointer
-  OurExceptionThrowFunctType functPtr = 
+  OurExceptionThrowFunctType functPtr =
     reinterpret_cast<OurExceptionThrowFunctType>(
        reinterpret_cast<intptr_t>(engine->getPointerToFunction(function)));
-  
+
   try {
     // Run test
     (*functPtr)(typeToThrow);
@@ -1589,15 +1589,15 @@
     // Catch foreign C++ exception
     fprintf(stderr,
             "\nrunExceptionThrow(...):In C++ catch OurCppRunException "
-            "with reason: %s.\n", 
+            "with reason: %s.\n",
             exc.what());
   }
   catch (...) {
-    // Catch all exceptions including our generated ones. This latter 
+    // Catch all exceptions including our generated ones. This latter
     // functionality works according to the example in rules 1.6.4 of
-    // http://sourcery.mentor.com/public/cxx-abi/abi-eh.html (v1.22), 
-    // given that these will be exceptions foreign to C++ 
-    // (the _Unwind_Exception::exception_class should be different from 
+    // http://sourcery.mentor.com/public/cxx-abi/abi-eh.html (v1.22),
+    // given that these will be exceptions foreign to C++
+    // (the _Unwind_Exception::exception_class should be different from
     // the one used by C++).
     fprintf(stderr,
             "\nrunExceptionThrow(...):In C++ catch all.\n");
@@ -1610,32 +1610,32 @@
 
 typedef llvm::ArrayRef<llvm::Type*> TypeArray;
 
-/// This initialization routine creates type info globals and 
+/// This initialization routine creates type info globals and
 /// adds external function declarations to module.
 /// @param numTypeInfos number of linear type info associated type info types
 ///        to create as GlobalVariable instances, starting with the value 1.
 /// @param module code for module instance
 /// @param builder builder instance
 static void createStandardUtilityFunctions(unsigned numTypeInfos,
-                                           llvm::Module &module, 
+                                           llvm::Module &module,
                                            llvm::IRBuilder<> &builder) {
-  
+
   llvm::LLVMContext &context = module.getContext();
-  
+
   // Exception initializations
-  
+
   // Setup exception catch state
-  ourExceptionNotThrownState = 
+  ourExceptionNotThrownState =
     llvm::ConstantInt::get(llvm::Type::getInt8Ty(context), 0),
-  ourExceptionThrownState = 
+  ourExceptionThrownState =
     llvm::ConstantInt::get(llvm::Type::getInt8Ty(context), 1),
-  ourExceptionCaughtState = 
+  ourExceptionCaughtState =
     llvm::ConstantInt::get(llvm::Type::getInt8Ty(context), 2),
-  
-  
-  
+
+
+
   // Create our type info type
-  ourTypeInfoType = llvm::StructType::get(context, 
+  ourTypeInfoType = llvm::StructType::get(context,
                                           TypeArray(builder.getInt32Ty()));
 
   llvm::Type *caughtResultFieldTypes[] = {
@@ -1648,47 +1648,47 @@
                                             TypeArray(caughtResultFieldTypes));
 
   // Create OurException type
-  ourExceptionType = llvm::StructType::get(context, 
+  ourExceptionType = llvm::StructType::get(context,
                                            TypeArray(ourTypeInfoType));
-  
+
   // Create portion of _Unwind_Exception type
   //
   // Note: Declaring only a portion of the _Unwind_Exception struct.
   //       Does this cause problems?
   ourUnwindExceptionType =
-    llvm::StructType::get(context, 
+    llvm::StructType::get(context,
                     TypeArray(builder.getInt64Ty()));
 
   struct OurBaseException_t dummyException;
-  
+
   // Calculate offset of OurException::unwindException member.
-  ourBaseFromUnwindOffset = ((uintptr_t) &dummyException) - 
+  ourBaseFromUnwindOffset = ((uintptr_t) &dummyException) -
                             ((uintptr_t) &(dummyException.unwindException));
-  
+
 #ifdef DEBUG
   fprintf(stderr,
           "createStandardUtilityFunctions(...):ourBaseFromUnwindOffset "
           "= %lld, sizeof(struct OurBaseException_t) - "
           "sizeof(struct _Unwind_Exception) = %lu.\n",
           ourBaseFromUnwindOffset,
-          sizeof(struct OurBaseException_t) - 
+          sizeof(struct OurBaseException_t) -
           sizeof(struct _Unwind_Exception));
 #endif
-  
+
   size_t numChars = sizeof(ourBaseExcpClassChars) / sizeof(char);
-  
+
   // Create our _Unwind_Exception::exception_class value
   ourBaseExceptionClass = genClass(ourBaseExcpClassChars, numChars);
-  
+
   // Type infos
-  
+
   std::string baseStr = "typeInfo", typeInfoName;
   std::ostringstream typeInfoNameBuilder;
   std::vector<llvm::Constant*> structVals;
-  
+
   llvm::Constant *nextStruct;
   llvm::GlobalVariable *nextGlobal = NULL;
-  
+
   // Generate each type info
   //
   // Note: First type info is not used.
@@ -1696,202 +1696,202 @@
     structVals.clear();
     structVals.push_back(llvm::ConstantInt::get(builder.getInt32Ty(), i));
     nextStruct = llvm::ConstantStruct::get(ourTypeInfoType, structVals);
-    
+
     typeInfoNameBuilder.str("");
     typeInfoNameBuilder << baseStr << i;
     typeInfoName = typeInfoNameBuilder.str();
-    
+
     // Note: Does not seem to work without allocation
-    nextGlobal = 
-    new llvm::GlobalVariable(module, 
-                             ourTypeInfoType, 
-                             true, 
-                             llvm::GlobalValue::ExternalLinkage, 
-                             nextStruct, 
+    nextGlobal =
+    new llvm::GlobalVariable(module,
+                             ourTypeInfoType,
+                             true,
+                             llvm::GlobalValue::ExternalLinkage,
+                             nextStruct,
                              typeInfoName);
-    
+
     ourTypeInfoNames.push_back(typeInfoName);
     ourTypeInfoNamesIndex[i] = typeInfoName;
   }
-  
+
   ArgNames argNames;
   ArgTypes argTypes;
   llvm::Function *funct = NULL;
-  
+
   // print32Int
-  
+
   llvm::Type *retType = builder.getVoidTy();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt32Ty());
   argTypes.push_back(builder.getInt8PtrTy());
-  
+
   argNames.clear();
-  
-  createFunction(module, 
-                 retType, 
-                 argTypes, 
-                 argNames, 
-                 "print32Int", 
-                 llvm::Function::ExternalLinkage, 
-                 true, 
+
+  createFunction(module,
+                 retType,
+                 argTypes,
+                 argNames,
+                 "print32Int",
+                 llvm::Function::ExternalLinkage,
+                 true,
                  false);
-  
+
   // print64Int
-  
+
   retType = builder.getVoidTy();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt64Ty());
   argTypes.push_back(builder.getInt8PtrTy());
-  
+
   argNames.clear();
-  
-  createFunction(module, 
-                 retType, 
-                 argTypes, 
-                 argNames, 
-                 "print64Int", 
-                 llvm::Function::ExternalLinkage, 
-                 true, 
+
+  createFunction(module,
+                 retType,
+                 argTypes,
+                 argNames,
+                 "print64Int",
+                 llvm::Function::ExternalLinkage,
+                 true,
                  false);
-  
+
   // printStr
-  
+
   retType = builder.getVoidTy();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt8PtrTy());
-  
+
   argNames.clear();
-  
-  createFunction(module, 
-                 retType, 
-                 argTypes, 
-                 argNames, 
-                 "printStr", 
-                 llvm::Function::ExternalLinkage, 
-                 true, 
+
+  createFunction(module,
+                 retType,
+                 argTypes,
+                 argNames,
+                 "printStr",
+                 llvm::Function::ExternalLinkage,
+                 true,
                  false);
-  
+
   // throwCppException
-  
+
   retType = builder.getVoidTy();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt32Ty());
-  
+
   argNames.clear();
-  
-  createFunction(module, 
-                 retType, 
-                 argTypes, 
-                 argNames, 
-                 "throwCppException", 
-                 llvm::Function::ExternalLinkage, 
-                 true, 
+
+  createFunction(module,
+                 retType,
+                 argTypes,
+                 argNames,
+                 "throwCppException",
+                 llvm::Function::ExternalLinkage,
+                 true,
                  false);
-  
+
   // deleteOurException
-  
+
   retType = builder.getVoidTy();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt8PtrTy());
-  
+
   argNames.clear();
-  
-  createFunction(module, 
-                 retType, 
-                 argTypes, 
-                 argNames, 
-                 "deleteOurException", 
-                 llvm::Function::ExternalLinkage, 
-                 true, 
+
+  createFunction(module,
+                 retType,
+                 argTypes,
+                 argNames,
+                 "deleteOurException",
+                 llvm::Function::ExternalLinkage,
+                 true,
                  false);
-  
+
   // createOurException
-  
+
   retType = builder.getInt8PtrTy();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt32Ty());
-  
+
   argNames.clear();
-  
-  createFunction(module, 
-                 retType, 
-                 argTypes, 
-                 argNames, 
-                 "createOurException", 
-                 llvm::Function::ExternalLinkage, 
-                 true, 
+
+  createFunction(module,
+                 retType,
+                 argTypes,
+                 argNames,
+                 "createOurException",
+                 llvm::Function::ExternalLinkage,
+                 true,
                  false);
-  
+
   // _Unwind_RaiseException
-  
+
   retType = builder.getInt32Ty();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt8PtrTy());
-  
+
   argNames.clear();
-  
-  funct = createFunction(module, 
-                         retType, 
-                         argTypes, 
-                         argNames, 
-                         "_Unwind_RaiseException", 
-                         llvm::Function::ExternalLinkage, 
-                         true, 
+
+  funct = createFunction(module,
+                         retType,
+                         argTypes,
+                         argNames,
+                         "_Unwind_RaiseException",
+                         llvm::Function::ExternalLinkage,
+                         true,
                          false);
-  
-  funct->addFnAttr(llvm::Attribute::NoReturn);
-  
+
+  funct->setDoesNotReturn();
+
   // _Unwind_Resume
-  
+
   retType = builder.getInt32Ty();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt8PtrTy());
-  
+
   argNames.clear();
-  
-  funct = createFunction(module, 
-                         retType, 
-                         argTypes, 
-                         argNames, 
-                         "_Unwind_Resume", 
-                         llvm::Function::ExternalLinkage, 
-                         true, 
+
+  funct = createFunction(module,
+                         retType,
+                         argTypes,
+                         argNames,
+                         "_Unwind_Resume",
+                         llvm::Function::ExternalLinkage,
+                         true,
                          false);
-  
-  funct->addFnAttr(llvm::Attribute::NoReturn);
-  
+
+  funct->setDoesNotReturn();
+
   // ourPersonality
-  
+
   retType = builder.getInt32Ty();
-  
+
   argTypes.clear();
   argTypes.push_back(builder.getInt32Ty());
   argTypes.push_back(builder.getInt32Ty());
   argTypes.push_back(builder.getInt64Ty());
   argTypes.push_back(builder.getInt8PtrTy());
   argTypes.push_back(builder.getInt8PtrTy());
-  
+
   argNames.clear();
-  
-  createFunction(module, 
-                 retType, 
-                 argTypes, 
-                 argNames, 
-                 "ourPersonality", 
-                 llvm::Function::ExternalLinkage, 
-                 true, 
+
+  createFunction(module,
+                 retType,
+                 argTypes,
+                 argNames,
+                 "ourPersonality",
+                 llvm::Function::ExternalLinkage,
+                 true,
                  false);
-  
+
   // llvm.eh.typeid.for intrinsic
-  
+
   getDeclaration(&module, llvm::Intrinsic::eh_typeid_for);
 }
 
@@ -1901,7 +1901,7 @@
 //===----------------------------------------------------------------------===//
 
 /// Demo main routine which takes the type info types to throw. A test will
-/// be run for each given type info type. While type info types with the value 
+/// be run for each given type info type. While type info types with the value
 /// of -1 will trigger a foreign C++ exception to be thrown; type info types
 /// <= 6 and >= 1 will be caught by test functions; and type info types > 6
 /// will result in exceptions which pass through to the test harness. All other
@@ -1920,87 +1920,86 @@
             "   for a full test.\n\n");
     return(0);
   }
-  
+
   // If not set, exception handling will not be turned on
   llvm::TargetOptions Opts;
   Opts.JITExceptionHandling = true;
-  
+
   llvm::InitializeNativeTarget();
   llvm::LLVMContext &context = llvm::getGlobalContext();
   llvm::IRBuilder<> theBuilder(context);
-  
+
   // Make the module, which holds all the code.
   llvm::Module *module = new llvm::Module("my cool jit", context);
-  
+
   // Build engine with JIT
   llvm::EngineBuilder factory(module);
   factory.setEngineKind(llvm::EngineKind::JIT);
   factory.setAllocateGVsWithCode(false);
   factory.setTargetOptions(Opts);
   llvm::ExecutionEngine *executionEngine = factory.create();
-  
+
   {
     llvm::FunctionPassManager fpm(module);
-    
-    // Set up the optimizer pipeline.  
+
+    // Set up the optimizer pipeline.
     // Start with registering info about how the
     // target lays out data structures.
-    fpm.add(new llvm::TargetData(*executionEngine->getTargetData()));
-    
+    fpm.add(new llvm::DataLayout(*executionEngine->getDataLayout()));
+
     // Optimizations turned on
 #ifdef ADD_OPT_PASSES
-    
+
     // Basic AliasAnslysis support for GVN.
     fpm.add(llvm::createBasicAliasAnalysisPass());
-    
+
     // Promote allocas to registers.
     fpm.add(llvm::createPromoteMemoryToRegisterPass());
-    
+
     // Do simple "peephole" optimizations and bit-twiddling optzns.
     fpm.add(llvm::createInstructionCombiningPass());
-    
+
     // Reassociate expressions.
     fpm.add(llvm::createReassociatePass());
-    
+
     // Eliminate Common SubExpressions.
     fpm.add(llvm::createGVNPass());
-    
-    // Simplify the control flow graph (deleting unreachable 
+
+    // Simplify the control flow graph (deleting unreachable
     // blocks, etc).
     fpm.add(llvm::createCFGSimplificationPass());
 #endif  // ADD_OPT_PASSES
-    
+
     fpm.doInitialization();
-    
+
     // Generate test code using function throwCppException(...) as
     // the function which throws foreign exceptions.
-    llvm::Function *toRun = 
-    createUnwindExceptionTest(*module, 
-                              theBuilder, 
+    llvm::Function *toRun =
+    createUnwindExceptionTest(*module,
+                              theBuilder,
                               fpm,
                               "throwCppException");
-    
+
     fprintf(stderr, "\nBegin module dump:\n\n");
-    
+
     module->dump();
-    
+
     fprintf(stderr, "\nEnd module dump:\n");
-    
+
     fprintf(stderr, "\n\nBegin Test:\n");
-    
+
     for (int i = 1; i < argc; ++i) {
       // Run test for each argument whose value is the exception
       // type to throw.
-      runExceptionThrow(executionEngine, 
-                        toRun, 
+      runExceptionThrow(executionEngine,
+                        toRun,
                         (unsigned) strtoul(argv[i], NULL, 10));
     }
-    
+
     fprintf(stderr, "\nEnd Test:\n\n");
-  } 
-  
+  }
+
   delete executionEngine;
-  
+
   return 0;
 }
-

Modified: llvm/branches/AMDILBackend/examples/Fibonacci/fibonacci.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/Fibonacci/fibonacci.cpp?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/Fibonacci/fibonacci.cpp (original)
+++ llvm/branches/AMDILBackend/examples/Fibonacci/fibonacci.cpp Tue Jan 15 11:16:16 2013
@@ -37,7 +37,7 @@
 using namespace llvm;
 
 static Function *CreateFibFunction(Module *M, LLVMContext &Context) {
-  // Create the fib function and insert it into module M.  This function is said
+  // Create the fib function and insert it into module M. This function is said
   // to return an int and take an int parameter.
   Function *FibF =
     cast<Function>(M->getOrInsertFunction("fib", Type::getInt32Ty(Context),

Modified: llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter4/toy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter4/toy.cpp?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter4/toy.cpp (original)
+++ llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter4/toy.cpp Tue Jan 15 11:16:16 2013
@@ -7,7 +7,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -584,7 +584,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Do simple "peephole" optimizations and bit-twiddling optzns.

Modified: llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter5/toy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter5/toy.cpp?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter5/toy.cpp (original)
+++ llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter5/toy.cpp Tue Jan 15 11:16:16 2013
@@ -7,7 +7,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -829,7 +829,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Do simple "peephole" optimizations and bit-twiddling optzns.

Modified: llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter6/toy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter6/toy.cpp?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter6/toy.cpp (original)
+++ llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter6/toy.cpp Tue Jan 15 11:16:16 2013
@@ -7,7 +7,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -947,7 +947,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Do simple "peephole" optimizations and bit-twiddling optzns.

Modified: llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter7/toy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter7/toy.cpp?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter7/toy.cpp (original)
+++ llvm/branches/AMDILBackend/examples/Kaleidoscope/Chapter7/toy.cpp Tue Jan 15 11:16:16 2013
@@ -7,7 +7,7 @@
 #include "llvm/PassManager.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Analysis/Passes.h"
-#include "llvm/Target/TargetData.h"
+#include "llvm/DataLayout.h"
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Support/TargetSelect.h"
 #include <cstdio>
@@ -1111,7 +1111,7 @@
 
   // Set up the optimizer pipeline.  Start with registering info about how the
   // target lays out data structures.
-  OurFPM.add(new TargetData(*TheExecutionEngine->getTargetData()));
+  OurFPM.add(new DataLayout(*TheExecutionEngine->getDataLayout()));
   // Provide basic AliasAnalysis support for GVN.
   OurFPM.add(createBasicAliasAnalysisPass());
   // Promote allocas to registers.

Modified: llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter4/toy.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter4/toy.ml?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter4/toy.ml (original)
+++ llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter4/toy.ml Tue Jan 15 11:16:16 2013
@@ -27,7 +27,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Do simple "peephole" optimizations and bit-twiddling optzn. *)
   add_instruction_combination the_fpm;

Modified: llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter5/toy.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter5/toy.ml?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter5/toy.ml (original)
+++ llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter5/toy.ml Tue Jan 15 11:16:16 2013
@@ -27,7 +27,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Do simple "peephole" optimizations and bit-twiddling optzn. *)
   add_instruction_combination the_fpm;

Modified: llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter6/toy.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter6/toy.ml?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter6/toy.ml (original)
+++ llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter6/toy.ml Tue Jan 15 11:16:16 2013
@@ -27,7 +27,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Do simple "peephole" optimizations and bit-twiddling optzn. *)
   add_instruction_combination the_fpm;

Modified: llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter7/toy.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter7/toy.ml?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter7/toy.ml (original)
+++ llvm/branches/AMDILBackend/examples/OCaml-Kaleidoscope/Chapter7/toy.ml Tue Jan 15 11:16:16 2013
@@ -28,7 +28,7 @@
 
   (* Set up the optimizer pipeline.  Start with registering info about how the
    * target lays out data structures. *)
-  TargetData.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
+  DataLayout.add (ExecutionEngine.target_data the_execution_engine) the_fpm;
 
   (* Promote allocas to registers. *)
   add_memory_to_register_promotion the_fpm;

Modified: llvm/branches/AMDILBackend/include/llvm-c/Core.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm-c/Core.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm-c/Core.h (original)
+++ llvm/branches/AMDILBackend/include/llvm-c/Core.h Tue Jan 15 11:16:16 2013
@@ -53,7 +53,7 @@
  * The declared parameter names are descriptive and specify which type is
  * required. Additionally, each type hierarchy is documented along with the
  * functions that operate upon it. For more detail, refer to LLVM's C++ code.
- * If in doubt, refer to Core.cpp, which performs paramter downcasts in the
+ * If in doubt, refer to Core.cpp, which performs parameter downcasts in the
  * form unwrap<RequiredType>(Param).
  *
  * Many exotic languages can interoperate with C code but have a harder time
@@ -106,7 +106,7 @@
 typedef struct LLVMOpaqueValue *LLVMValueRef;
 
 /**
- * Represents a basic block of instruction in LLVM IR.
+ * Represents a basic block of instructions in LLVM IR.
  *
  * This models llvm::BasicBlock.
  */
@@ -173,10 +173,11 @@
     LLVMUWTable = 1 << 30,
     LLVMNonLazyBind = 1 << 31
 
-    // FIXME: This attribute is currently not included in the C API as
-    // a temporary measure until the API/ABI impact to the C API is understood
-    // and the path forward agreed upon.
-    //LLVMAddressSafety = 1ULL << 32
+    /* FIXME: This attribute is currently not included in the C API as
+       a temporary measure until the API/ABI impact to the C API is understood
+       and the path forward agreed upon.
+    LLVMAddressSafety = 1ULL << 32
+    */
 } LLVMAttribute;
 
 typedef enum {
@@ -282,6 +283,7 @@
   LLVMLinkOnceAnyLinkage, /**< Keep one copy of function when linking (inline)*/
   LLVMLinkOnceODRLinkage, /**< Same, but only replaced by something
                             equivalent. */
+  LLVMLinkOnceODRAutoHideLinkage, /**< Like LinkOnceODR, but possibly hidden. */
   LLVMWeakAnyLinkage,     /**< Keep one copy of function when linking (weak) */
   LLVMWeakODRLinkage,     /**< Same, but only replaced by something
                             equivalent. */
@@ -295,9 +297,7 @@
   LLVMGhostLinkage,       /**< Obsolete */
   LLVMCommonLinkage,      /**< Tentative definitions */
   LLVMLinkerPrivateLinkage, /**< Like Private, but linker removes. */
-  LLVMLinkerPrivateWeakLinkage, /**< Like LinkerPrivate, but is weak. */
-  LLVMLinkerPrivateWeakDefAutoLinkage /**< Like LinkerPrivateWeak, but possibly
-                                           hidden. */
+  LLVMLinkerPrivateWeakLinkage /**< Like LinkerPrivate, but is weak. */
 } LLVMLinkage;
 
 typedef enum {
@@ -986,7 +986,7 @@
  *
  * LLVMValueRef essentially represents llvm::Value. There is a rich
  * hierarchy of classes within this type. Depending on the instance
- * obtain, not all APIs are available.
+ * obtained, not all APIs are available.
  *
  * Callers can determine the type of a LLVMValueRef by calling the
  * LLVMIsA* family of functions (e.g. LLVMIsAArgument()). These
@@ -1162,7 +1162,7 @@
  *
  * Uses are obtained in an iterator fashion. First, call this function
  * to obtain a reference to the first use. Then, call LLVMGetNextUse()
- * on that instance and all subsequently obtained instances untl
+ * on that instance and all subsequently obtained instances until
  * LLVMGetNextUse() returns NULL.
  *
  * @see llvm::Value::use_begin()
@@ -1803,7 +1803,7 @@
  * Set the alignment for a function parameter.
  *
  * @see llvm::Argument::addAttr()
- * @see llvm::Attribute::constructAlignmentFromInt()
+ * @see llvm::AttrBuilder::addAlignmentAttr()
  */
 void LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align);
 
@@ -1869,6 +1869,27 @@
 const char  *LLVMGetMDString(LLVMValueRef V, unsigned* Len);
 
 /**
+ * Obtain the number of operands from an MDNode value.
+ *
+ * @param V MDNode to get number of operands from.
+ * @return Number of operands of the MDNode.
+ */
+unsigned LLVMGetMDNodeNumOperands(LLVMValueRef V);
+
+/**
+ * Obtain the given MDNode's operands.
+ *
+ * The passed LLVMValueRef pointer should point to enough memory to hold all of
+ * the operands of the given MDNode (see LLVMGetMDNodeNumOperands) as
+ * LLVMValueRefs. This memory will be populated with the LLVMValueRefs of the
+ * MDNode's operands.
+ *
+ * @param V MDNode to get the operands from.
+ * @param Dest Destination array for operands.
+ */
+void LLVMGetMDNodeOperands(LLVMValueRef V, LLVMValueRef *Dest);
+
+/**
  * @}
  */
 
@@ -2688,7 +2709,7 @@
   
   template<typename T>
   inline T **unwrap(LLVMValueRef *Vals, unsigned Length) {
-    #if DEBUG
+    #ifdef DEBUG
     for (LLVMValueRef *I = Vals, *E = Vals + Length; I != E; ++I)
       cast<T>(*I);
     #endif

Modified: llvm/branches/AMDILBackend/include/llvm-c/Disassembler.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm-c/Disassembler.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm-c/Disassembler.h (original)
+++ llvm/branches/AMDILBackend/include/llvm-c/Disassembler.h Tue Jan 15 11:16:16 2013
@@ -146,6 +146,15 @@
                                       LLVMSymbolLookupCallback SymbolLookUp);
 
 /**
+ * Set the disassembler's options.  Returns 1 if it can set the Options and 0
+ * otherwise.
+ */
+int LLVMSetDisasmOptions(LLVMDisasmContextRef DC, uint64_t Options);
+
+/* The option to produce marked up assembly. */
+#define LLVMDisassembler_Option_UseMarkup 1
+
+/**
  * Dispose of a disassembler context.
  */
 void LLVMDisasmDispose(LLVMDisasmContextRef DC);

Modified: llvm/branches/AMDILBackend/include/llvm-c/Target.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm-c/Target.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm-c/Target.h (original)
+++ llvm/branches/AMDILBackend/include/llvm-c/Target.h Tue Jan 15 11:16:16 2013
@@ -145,7 +145,7 @@
 /*===-- Target Data -------------------------------------------------------===*/
 
 /** Creates target data from a target layout string.
-    See the constructor llvm::TargetData::TargetData. */
+    See the constructor llvm::DataLayout::DataLayout. */
 LLVMTargetDataRef LLVMCreateTargetData(const char *StringRep);
 
 /** Adds target data information to a pass manager. This does not take ownership
@@ -160,48 +160,58 @@
 
 /** Converts target data to a target layout string. The string must be disposed
     with LLVMDisposeMessage.
-    See the constructor llvm::TargetData::TargetData. */
+    See the constructor llvm::DataLayout::DataLayout. */
 char *LLVMCopyStringRepOfTargetData(LLVMTargetDataRef);
 
 /** Returns the byte order of a target, either LLVMBigEndian or
     LLVMLittleEndian.
-    See the method llvm::TargetData::isLittleEndian. */
+    See the method llvm::DataLayout::isLittleEndian. */
 enum LLVMByteOrdering LLVMByteOrder(LLVMTargetDataRef);
 
 /** Returns the pointer size in bytes for a target.
-    See the method llvm::TargetData::getPointerSize. */
+    See the method llvm::DataLayout::getPointerSize. */
 unsigned LLVMPointerSize(LLVMTargetDataRef);
 
+/** Returns the pointer size in bytes for a target for a specified
+    address space.
+    See the method llvm::DataLayout::getPointerSize. */
+unsigned LLVMPointerSizeForAS(LLVMTargetDataRef, unsigned AS);
+
 /** Returns the integer type that is the same size as a pointer on a target.
-    See the method llvm::TargetData::getIntPtrType. */
+    See the method llvm::DataLayout::getIntPtrType. */
 LLVMTypeRef LLVMIntPtrType(LLVMTargetDataRef);
 
+/** Returns the integer type that is the same size as a pointer on a target.
+    This version allows the address space to be specified.
+    See the method llvm::DataLayout::getIntPtrType. */
+LLVMTypeRef LLVMIntPtrTypeForAS(LLVMTargetDataRef, unsigned AS);
+
 /** Computes the size of a type in bytes for a target.
-    See the method llvm::TargetData::getTypeSizeInBits. */
+    See the method llvm::DataLayout::getTypeSizeInBits. */
 unsigned long long LLVMSizeOfTypeInBits(LLVMTargetDataRef, LLVMTypeRef);
 
 /** Computes the storage size of a type in bytes for a target.
-    See the method llvm::TargetData::getTypeStoreSize. */
+    See the method llvm::DataLayout::getTypeStoreSize. */
 unsigned long long LLVMStoreSizeOfType(LLVMTargetDataRef, LLVMTypeRef);
 
 /** Computes the ABI size of a type in bytes for a target.
-    See the method llvm::TargetData::getTypeAllocSize. */
+    See the method llvm::DataLayout::getTypeAllocSize. */
 unsigned long long LLVMABISizeOfType(LLVMTargetDataRef, LLVMTypeRef);
 
 /** Computes the ABI alignment of a type in bytes for a target.
-    See the method llvm::TargetData::getTypeABISize. */
+    See the method llvm::DataLayout::getTypeABISize. */
 unsigned LLVMABIAlignmentOfType(LLVMTargetDataRef, LLVMTypeRef);
 
 /** Computes the call frame alignment of a type in bytes for a target.
-    See the method llvm::TargetData::getTypeABISize. */
+    See the method llvm::DataLayout::getTypeABISize. */
 unsigned LLVMCallFrameAlignmentOfType(LLVMTargetDataRef, LLVMTypeRef);
 
 /** Computes the preferred alignment of a type in bytes for a target.
-    See the method llvm::TargetData::getTypeABISize. */
+    See the method llvm::DataLayout::getTypeABISize. */
 unsigned LLVMPreferredAlignmentOfType(LLVMTargetDataRef, LLVMTypeRef);
 
 /** Computes the preferred alignment of a global variable in bytes for a target.
-    See the method llvm::TargetData::getPreferredAlignment. */
+    See the method llvm::DataLayout::getPreferredAlignment. */
 unsigned LLVMPreferredAlignmentOfGlobal(LLVMTargetDataRef,
                                         LLVMValueRef GlobalVar);
 
@@ -216,7 +226,7 @@
                                        unsigned Element);
 
 /** Deallocates a TargetData.
-    See the destructor llvm::TargetData::~TargetData. */
+    See the destructor llvm::DataLayout::~DataLayout. */
 void LLVMDisposeTargetData(LLVMTargetDataRef);
 
 /**
@@ -227,15 +237,15 @@
 }
 
 namespace llvm {
-  class TargetData;
+  class DataLayout;
   class TargetLibraryInfo;
 
-  inline TargetData *unwrap(LLVMTargetDataRef P) {
-    return reinterpret_cast<TargetData*>(P);
+  inline DataLayout *unwrap(LLVMTargetDataRef P) {
+    return reinterpret_cast<DataLayout*>(P);
   }
   
-  inline LLVMTargetDataRef wrap(const TargetData *P) {
-    return reinterpret_cast<LLVMTargetDataRef>(const_cast<TargetData*>(P));
+  inline LLVMTargetDataRef wrap(const DataLayout *P) {
+    return reinterpret_cast<LLVMTargetDataRef>(const_cast<DataLayout*>(P));
   }
 
   inline TargetLibraryInfo *unwrap(LLVMTargetLibraryInfoRef P) {

Modified: llvm/branches/AMDILBackend/include/llvm-c/TargetMachine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm-c/TargetMachine.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm-c/TargetMachine.h (original)
+++ llvm/branches/AMDILBackend/include/llvm-c/TargetMachine.h Tue Jan 15 11:16:16 2013
@@ -104,7 +104,7 @@
   LLVMDisposeMessage. */
 char *LLVMGetTargetMachineFeatureString(LLVMTargetMachineRef T);
 
-/** Returns the llvm::TargetData used for this llvm:TargetMachine. */
+/** Returns the llvm::DataLayout used for this llvm:TargetMachine. */
 LLVMTargetDataRef LLVMGetTargetMachineData(LLVMTargetMachineRef T);
 
 /** Emits an asm or object file for the given module to the filename. This

Modified: llvm/branches/AMDILBackend/include/llvm-c/Transforms/Vectorize.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm-c/Transforms/Vectorize.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm-c/Transforms/Vectorize.h (original)
+++ llvm/branches/AMDILBackend/include/llvm-c/Transforms/Vectorize.h Tue Jan 15 11:16:16 2013
@@ -36,6 +36,9 @@
 /** See llvm::createBBVectorizePass function. */
 void LLVMAddBBVectorizePass(LLVMPassManagerRef PM);
 
+/** See llvm::createLoopVectorizePass function. */
+void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM);
+
 /**
  * @}
  */

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/APFloat.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/APFloat.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/APFloat.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/APFloat.h Tue Jan 15 11:16:16 2013
@@ -274,6 +274,7 @@
     /* C fmod, or llvm frem. */
     opStatus mod(const APFloat &, roundingMode);
     opStatus fusedMultiplyAdd(const APFloat &, const APFloat &, roundingMode);
+    opStatus roundToIntegral(roundingMode);
 
     /* Sign operations.  */
     void changeSign();
@@ -454,14 +455,11 @@
 
     /* The sign bit of this number.  */
     unsigned int sign: 1;
-
-    /* For PPCDoubleDouble, we have a second exponent and sign (the second
-       significand is appended to the first one, although it would be wrong to
-       regard these as a single number for arithmetic purposes).  These fields
-       are not meaningful for any other type. */
-    exponent_t exponent2 : 11;
-    unsigned int sign2: 1;
   };
+
+  // See friend declaration above. This additional declaration is required in
+  // order to compile LLVM with IBM xlC compiler.
+  hash_code hash_value(const APFloat &Arg);
 } /* namespace llvm */
 
 #endif /* LLVM_FLOAT_H */

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/APInt.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/APInt.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/APInt.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/APInt.h Tue Jan 15 11:16:16 2013
@@ -251,7 +251,7 @@
   /// constructor.
   APInt(unsigned numBits, unsigned numWords, const uint64_t bigVal[]);
 
-  /// This constructor interprets the string \arg str in the given radix. The
+  /// This constructor interprets the string \p str in the given radix. The
   /// interpretation stops when the first character that is not suitable for the
   /// radix is encountered, or the end of the string. Acceptable radix values
   /// are 2, 8, 10, 16, and 36. It is an error for the value implied by the 
@@ -760,7 +760,7 @@
   APInt shl(unsigned shiftAmt) const {
     assert(shiftAmt <= BitWidth && "Invalid shift amount");
     if (isSingleWord()) {
-      if (shiftAmt == BitWidth)
+      if (shiftAmt >= BitWidth)
         return APInt(BitWidth, 0); // avoid undefined shift results
       return APInt(BitWidth, VAL << shiftAmt);
     }
@@ -1231,15 +1231,15 @@
   }
 
   /// This method determines how many bits are required to hold the APInt
-  /// equivalent of the string given by \arg str.
+  /// equivalent of the string given by \p str.
   /// @brief Get bits required for string value.
   static unsigned getBitsNeeded(StringRef str, uint8_t radix);
 
   /// countLeadingZeros - This function is an APInt version of the
   /// countLeadingZeros_{32,64} functions in MathExtras.h. It counts the number
   /// of zeros from the most significant bit to the first one bit.
-  /// @returns BitWidth if the value is zero.
-  /// @returns the number of zeros from the most significant bit to the first
+  /// @returns BitWidth if the value is zero, otherwise
+  /// returns the number of zeros from the most significant bit to the first
   /// one bits.
   unsigned countLeadingZeros() const {
     if (isSingleWord()) {
@@ -1252,8 +1252,8 @@
   /// countLeadingOnes - This function is an APInt version of the
   /// countLeadingOnes_{32,64} functions in MathExtras.h. It counts the number
   /// of ones from the most significant bit to the first zero bit.
-  /// @returns 0 if the high order bit is not set
-  /// @returns the number of 1 bits from the most significant to the least
+  /// @returns 0 if the high order bit is not set, otherwise
+  /// returns the number of 1 bits from the most significant to the least
   /// @brief Count the number of leading one bits.
   unsigned countLeadingOnes() const;
 
@@ -1266,8 +1266,8 @@
   /// countTrailingZeros - This function is an APInt version of the
   /// countTrailingZeros_{32,64} functions in MathExtras.h. It counts
   /// the number of zeros from the least significant bit to the first set bit.
-  /// @returns BitWidth if the value is zero.
-  /// @returns the number of zeros from the least significant bit to the first
+  /// @returns BitWidth if the value is zero, otherwise
+  /// returns the number of zeros from the least significant bit to the first
   /// one bit.
   /// @brief Count the number of trailing zero bits.
   unsigned countTrailingZeros() const;
@@ -1275,8 +1275,8 @@
   /// countTrailingOnes - This function is an APInt version of the
   /// countTrailingOnes_{32,64} functions in MathExtras.h. It counts
   /// the number of ones from the least significant bit to the first zero bit.
-  /// @returns BitWidth if the value is all ones.
-  /// @returns the number of ones from the least significant bit to the first
+  /// @returns BitWidth if the value is all ones, otherwise
+  /// returns the number of ones from the least significant bit to the first
   /// zero bit.
   /// @brief Count the number of trailing one bits.
   unsigned countTrailingOnes() const {
@@ -1288,8 +1288,8 @@
   /// countPopulation - This function is an APInt version of the
   /// countPopulation_{32,64} functions in MathExtras.h. It counts the number
   /// of 1 bits in the APInt value.
-  /// @returns 0 if the value is zero.
-  /// @returns the number of set bits.
+  /// @returns 0 if the value is zero, otherwise returns the number of set
+  /// bits.
   /// @brief Count the number of bits set.
   unsigned countPopulation() const {
     if (isSingleWord())
@@ -1780,6 +1780,9 @@
 
 } // End of APIntOps namespace
 
+  // See friend declaration above. This additional declaration is required in
+  // order to compile LLVM with IBM xlC compiler.
+  hash_code hash_value(const APInt &Arg);
 } // End of llvm namespace
 
 #endif

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/ArrayRef.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/ArrayRef.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/ArrayRef.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/ArrayRef.h Tue Jan 15 11:16:16 2013
@@ -59,12 +59,17 @@
     ArrayRef(const T *begin, const T *end)
       : Data(begin), Length(end - begin) {}
 
-    /// Construct an ArrayRef from a SmallVector.
-    /*implicit*/ ArrayRef(const SmallVectorTemplateCommon<T> &Vec)
-      : Data(Vec.data()), Length(Vec.size()) {}
+    /// Construct an ArrayRef from a SmallVector. This is templated in order to
+    /// avoid instantiating SmallVectorTemplateCommon<T> whenever we
+    /// copy-construct an ArrayRef.
+    template<typename U>
+    /*implicit*/ ArrayRef(const SmallVectorTemplateCommon<T, U> &Vec)
+      : Data(Vec.data()), Length(Vec.size()) {
+    }
 
     /// Construct an ArrayRef from a std::vector.
-    /*implicit*/ ArrayRef(const std::vector<T> &Vec)
+    template<typename A>
+    /*implicit*/ ArrayRef(const std::vector<T, A> &Vec)
       : Data(Vec.empty() ? (T*)0 : &Vec[0]), Length(Vec.size()) {}
 
     /// Construct an ArrayRef from a C array.

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/BitVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/BitVector.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/BitVector.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/BitVector.h Tue Jan 15 11:16:16 2013
@@ -172,7 +172,7 @@
     unsigned BitPos = Prev % BITWORD_SIZE;
     BitWord Copy = Bits[WordPos];
     // Mask off previous bits.
-    Copy &= ~0L << BitPos;
+    Copy &= ~0UL << BitPos;
 
     if (Copy != 0) {
       if (sizeof(BitWord) == 4)
@@ -237,6 +237,34 @@
     return *this;
   }
 
+  /// set - Efficiently set a range of bits in [I, E)
+  BitVector &set(unsigned I, unsigned E) {
+    assert(I <= E && "Attempted to set backwards range!");
+    assert(E <= size() && "Attempted to set out-of-bounds range!");
+
+    if (I == E) return *this;
+
+    if (I / BITWORD_SIZE == E / BITWORD_SIZE) {
+      BitWord EMask = 1UL << (E % BITWORD_SIZE);
+      BitWord IMask = 1UL << (I % BITWORD_SIZE);
+      BitWord Mask = EMask - IMask;
+      Bits[I / BITWORD_SIZE] |= Mask;
+      return *this;
+    }
+
+    BitWord PrefixMask = ~0UL << (I % BITWORD_SIZE);
+    Bits[I / BITWORD_SIZE] |= PrefixMask;
+    I = RoundUpToAlignment(I, BITWORD_SIZE);
+
+    for (; I + BITWORD_SIZE <= E; I += BITWORD_SIZE)
+      Bits[I / BITWORD_SIZE] = ~0UL;
+
+    BitWord PostfixMask = (1UL << (E % BITWORD_SIZE)) - 1;
+    Bits[I / BITWORD_SIZE] |= PostfixMask;
+
+    return *this;
+  }
+
   BitVector &reset() {
     init_words(Bits, Capacity, false);
     return *this;
@@ -247,6 +275,34 @@
     return *this;
   }
 
+  /// reset - Efficiently reset a range of bits in [I, E)
+  BitVector &reset(unsigned I, unsigned E) {
+    assert(I <= E && "Attempted to reset backwards range!");
+    assert(E <= size() && "Attempted to reset out-of-bounds range!");
+
+    if (I == E) return *this;
+
+    if (I / BITWORD_SIZE == E / BITWORD_SIZE) {
+      BitWord EMask = 1UL << (E % BITWORD_SIZE);
+      BitWord IMask = 1UL << (I % BITWORD_SIZE);
+      BitWord Mask = EMask - IMask;
+      Bits[I / BITWORD_SIZE] &= ~Mask;
+      return *this;
+    }
+
+    BitWord PrefixMask = ~0UL << (I % BITWORD_SIZE);
+    Bits[I / BITWORD_SIZE] &= ~PrefixMask;
+    I = RoundUpToAlignment(I, BITWORD_SIZE);
+
+    for (; I + BITWORD_SIZE <= E; I += BITWORD_SIZE)
+      Bits[I / BITWORD_SIZE] = 0UL;
+
+    BitWord PostfixMask = (1UL << (E % BITWORD_SIZE)) - 1;
+    Bits[I / BITWORD_SIZE] &= ~PostfixMask;
+
+    return *this;
+  }
+
   BitVector &flip() {
     for (unsigned i = 0; i < NumBitWords(size()); ++i)
       Bits[i] = ~Bits[i];
@@ -311,7 +367,7 @@
     return !(*this == RHS);
   }
 
-  // Intersection, union, disjoint union.
+  /// Intersection, union, disjoint union.
   BitVector &operator&=(const BitVector &RHS) {
     unsigned ThisWords = NumBitWords(size());
     unsigned RHSWords  = NumBitWords(RHS.size());
@@ -328,7 +384,7 @@
     return *this;
   }
 
-  // reset - Reset bits that are set in RHS. Same as *this &= ~RHS.
+  /// reset - Reset bits that are set in RHS. Same as *this &= ~RHS.
   BitVector &reset(const BitVector &RHS) {
     unsigned ThisWords = NumBitWords(size());
     unsigned RHSWords  = NumBitWords(RHS.size());
@@ -338,6 +394,23 @@
     return *this;
   }
 
+  /// test - Check if (This - RHS) is zero.
+  /// This is the same as reset(RHS) and any().
+  bool test(const BitVector &RHS) const {
+    unsigned ThisWords = NumBitWords(size());
+    unsigned RHSWords  = NumBitWords(RHS.size());
+    unsigned i;
+    for (i = 0; i != std::min(ThisWords, RHSWords); ++i)
+      if ((Bits[i] & ~RHS.Bits[i]) != 0)
+        return true;
+
+    for (; i != ThisWords ; ++i)
+      if (Bits[i] != 0)
+        return true;
+
+    return false;
+  }
+
   BitVector &operator|=(const BitVector &RHS) {
     if (size() < RHS.size())
       resize(RHS.size());
@@ -451,8 +524,11 @@
     //  Then set any stray high bits of the last used word.
     unsigned ExtraBits = Size % BITWORD_SIZE;
     if (ExtraBits) {
-      Bits[UsedWords-1] &= ~(~0L << ExtraBits);
-      Bits[UsedWords-1] |= (0 - (BitWord)t) << ExtraBits;
+      BitWord ExtraBitMask = ~0UL << ExtraBits;
+      if (t)
+        Bits[UsedWords-1] |= ExtraBitMask;
+      else
+        Bits[UsedWords-1] &= ~ExtraBitMask;
     }
   }
 

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/DAGDeltaAlgorithm.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/DAGDeltaAlgorithm.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/DAGDeltaAlgorithm.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/DAGDeltaAlgorithm.h Tue Jan 15 11:16:16 2013
@@ -48,17 +48,18 @@
 public:
   virtual ~DAGDeltaAlgorithm() {}
 
-  /// Run - Minimize the DAG formed by the \arg Changes vertices and the \arg
-  /// Dependencies edges by executing \see ExecuteOneTest() on subsets of
+  /// Run - Minimize the DAG formed by the \p Changes vertices and the
+  /// \p Dependencies edges by executing \see ExecuteOneTest() on subsets of
   /// changes and returning the smallest set which still satisfies the test
-  /// predicate and the input \arg Dependencies.
+  /// predicate and the input \p Dependencies.
   ///
   /// \param Changes The list of changes.
   ///
   /// \param Dependencies The list of dependencies amongst changes. For each
-  /// (x,y) in \arg Dependencies, both x and y must be in \arg Changes. The
-  /// minimization algorithm guarantees that for each tested changed set S, x
-  /// \in S implies y \in S. It is an error to have cyclic dependencies.
+  /// (x,y) in \p Dependencies, both x and y must be in \p Changes. The
+  /// minimization algorithm guarantees that for each tested changed set S,
+  /// \f$ x \in S \f$ implies \f$ y \in S \f$. It is an error to have cyclic
+  /// dependencies.
   changeset_ty Run(const changeset_ty &Changes,
                    const std::vector<edge_ty> &Dependencies);
 
@@ -67,7 +68,7 @@
                                   const changesetlist_ty &Sets,
                                   const changeset_ty &Required) {}
 
-  /// ExecuteOneTest - Execute a single test predicate on the change set \arg S.
+  /// ExecuteOneTest - Execute a single test predicate on the change set \p S.
   virtual bool ExecuteOneTest(const changeset_ty &S) = 0;
 };
 

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/DeltaAlgorithm.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/DeltaAlgorithm.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/DeltaAlgorithm.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/DeltaAlgorithm.h Tue Jan 15 11:16:16 2013
@@ -45,23 +45,23 @@
   /// since we always reduce following a success.
   std::set<changeset_ty> FailedTestsCache;
 
-  /// GetTestResult - Get the test result for the \arg Changes from the
+  /// GetTestResult - Get the test result for the \p Changes from the
   /// cache, executing the test if necessary.
   ///
   /// \param Changes - The change set to test.
   /// \return - The test result.
   bool GetTestResult(const changeset_ty &Changes);
 
-  /// Split - Partition a set of changes \arg S into one or two subsets.
+  /// Split - Partition a set of changes \p S into one or two subsets.
   void Split(const changeset_ty &S, changesetlist_ty &Res);
 
-  /// Delta - Minimize a set of \arg Changes which has been partioned into
+  /// Delta - Minimize a set of \p Changes which has been partioned into
   /// smaller sets, by attempting to remove individual subsets.
   changeset_ty Delta(const changeset_ty &Changes,
                      const changesetlist_ty &Sets);
 
-  /// Search - Search for a subset (or subsets) in \arg Sets which can be
-  /// removed from \arg Changes while still satisfying the predicate.
+  /// Search - Search for a subset (or subsets) in \p Sets which can be
+  /// removed from \p Changes while still satisfying the predicate.
   ///
   /// \param Res - On success, a subset of Changes which satisfies the
   /// predicate.
@@ -74,13 +74,13 @@
   virtual void UpdatedSearchState(const changeset_ty &Changes,
                                   const changesetlist_ty &Sets) {}
 
-  /// ExecuteOneTest - Execute a single test predicate on the change set \arg S.
+  /// ExecuteOneTest - Execute a single test predicate on the change set \p S.
   virtual bool ExecuteOneTest(const changeset_ty &S) = 0;
 
 public:
   virtual ~DeltaAlgorithm();
 
-  /// Run - Minimize the set \arg Changes by executing \see ExecuteOneTest() on
+  /// Run - Minimize the set \p Changes by executing \see ExecuteOneTest() on
   /// subsets of changes and returning the smallest set which still satisfies
   /// the test predicate.
   changeset_ty Run(const changeset_ty &Changes);

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/DenseMap.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/DenseMap.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/DenseMap.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/DenseMap.h Tue Jan 15 11:16:16 2013
@@ -420,9 +420,10 @@
       NumBuckets = getNumBuckets();
     }
     if (NumBuckets-(NewNumEntries+getNumTombstones()) <= NumBuckets/8) {
-      this->grow(NumBuckets);
+      this->grow(NumBuckets * 2);
       LookupBucketFor(Key, TheBucket);
     }
+    assert(TheBucket);
 
     // Only update the state after we've grown our bucket space appropriately
     // so that when growing buckets we have self-consistent entry count.
@@ -599,7 +600,7 @@
     unsigned OldNumBuckets = NumBuckets;
     BucketT *OldBuckets = Buckets;
 
-    allocateBuckets(std::max<unsigned>(64, NextPowerOf2(AtLeast)));
+    allocateBuckets(std::max<unsigned>(64, NextPowerOf2(AtLeast-1)));
     assert(Buckets);
     if (!OldBuckets) {
       this->BaseT::initEmpty();
@@ -617,8 +618,9 @@
     this->destroyAll();
 
     // Reduce the number of buckets.
-    unsigned NewNumBuckets
-      = std::max(64, 1 << (Log2_32_Ceil(OldNumEntries) + 1));
+    unsigned NewNumBuckets = 0;
+    if (OldNumEntries)
+      NewNumBuckets = std::max(64, 1 << (Log2_32_Ceil(OldNumEntries) + 1));
     if (NewNumBuckets == NumBuckets) {
       this->BaseT::initEmpty();
       return;
@@ -686,8 +688,7 @@
 
   /// A "union" of an inline bucket array and the struct representing
   /// a large bucket. This union will be discriminated by the 'Small' bit.
-  typename AlignedCharArray<BucketT[InlineBuckets], LargeRep>::union_type
-    storage;
+  AlignedCharArrayUnion<BucketT[InlineBuckets], LargeRep> storage;
 
 public:
   explicit SmallDenseMap(unsigned NumInitBuckets = 0) {
@@ -825,16 +826,15 @@
   }
 
   void grow(unsigned AtLeast) {
-    if (AtLeast > InlineBuckets)
-      AtLeast = std::max<unsigned>(64, NextPowerOf2(AtLeast));
+    if (AtLeast >= InlineBuckets)
+      AtLeast = std::max<unsigned>(64, NextPowerOf2(AtLeast-1));
 
     if (Small) {
-      if (AtLeast <= InlineBuckets)
+      if (AtLeast < InlineBuckets)
         return; // Nothing to do.
 
       // First move the inline buckets into a temporary storage.
-      typename AlignedCharArray<BucketT[InlineBuckets]>::union_type
-        TmpStorage;
+      AlignedCharArrayUnion<BucketT[InlineBuckets]> TmpStorage;
       BucketT *TmpBegin = reinterpret_cast<BucketT *>(TmpStorage.buffer);
       BucketT *TmpEnd = TmpBegin;
 

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/DenseMapInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/DenseMapInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/DenseMapInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/DenseMapInfo.h Tue Jan 15 11:16:16 2013
@@ -31,12 +31,12 @@
 template<typename T>
 struct DenseMapInfo<T*> {
   static inline T* getEmptyKey() {
-    intptr_t Val = -1;
+    uintptr_t Val = static_cast<uintptr_t>(-1);
     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
     return reinterpret_cast<T*>(Val);
   }
   static inline T* getTombstoneKey() {
-    intptr_t Val = -2;
+    uintptr_t Val = static_cast<uintptr_t>(-2);
     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
     return reinterpret_cast<T*>(Val);
   }
@@ -105,7 +105,7 @@
 // Provide DenseMapInfo for longs.
 template<> struct DenseMapInfo<long> {
   static inline long getEmptyKey() {
-    return (1UL << (sizeof(long) * 8 - 1)) - 1L;
+    return (1UL << (sizeof(long) * 8 - 1)) - 1UL;
   }
   static inline long getTombstoneKey() { return getEmptyKey() - 1L; }
   static unsigned getHashValue(const long& Val) {

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/EquivalenceClasses.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/EquivalenceClasses.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/EquivalenceClasses.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/EquivalenceClasses.h Tue Jan 15 11:16:16 2013
@@ -33,6 +33,7 @@
 ///
 /// Here is a simple example using integers:
 ///
+/// \code
 ///  EquivalenceClasses<int> EC;
 ///  EC.unionSets(1, 2);                // insert 1, 2 into the same set
 ///  EC.insert(4); EC.insert(5);        // insert 4, 5 into own sets
@@ -46,6 +47,7 @@
 ///      cerr << *MI << " ";  // Print member.
 ///    cerr << "\n";   // Finish set.
 ///  }
+/// \endcode
 ///
 /// This example prints:
 ///   4

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/FoldingSet.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/FoldingSet.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/FoldingSet.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/FoldingSet.h Tue Jan 15 11:16:16 2013
@@ -278,6 +278,10 @@
 
   bool operator==(FoldingSetNodeIDRef) const;
 
+  /// Used to compare the "ordering" of two nodes as defined by the
+  /// profiled bits and their ordering defined by memcmp().
+  bool operator<(FoldingSetNodeIDRef) const;
+
   const unsigned *getData() const { return Data; }
   size_t getSize() const { return Size; }
 };
@@ -327,6 +331,11 @@
   bool operator==(const FoldingSetNodeID &RHS) const;
   bool operator==(const FoldingSetNodeIDRef RHS) const;
 
+  /// Used to compare the "ordering" of two nodes as defined by the
+  /// profiled bits and their ordering defined by memcmp().
+  bool operator<(const FoldingSetNodeID &RHS) const;
+  bool operator<(const FoldingSetNodeIDRef RHS) const;
+
   /// Intern - Copy this node's data to a memory region allocated from the
   /// given allocator and return a FoldingSetNodeIDRef describing the
   /// interned data.

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/Hashing.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/Hashing.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/Hashing.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/Hashing.h Tue Jan 15 11:16:16 2013
@@ -409,7 +409,6 @@
 /// combining them, this (as an optimization) directly combines the integers.
 template <typename InputIteratorT>
 hash_code hash_combine_range_impl(InputIteratorT first, InputIteratorT last) {
-  typedef typename std::iterator_traits<InputIteratorT>::value_type ValueT;
   const size_t seed = get_execution_seed();
   char buffer[64], *buffer_ptr = buffer;
   char *const buffer_end = buffer_ptr + array_lengthof(buffer);
@@ -711,7 +710,7 @@
 #endif
 
 
-// Implementation details for implementatinos of hash_value overloads provided
+// Implementation details for implementations of hash_value overloads provided
 // here.
 namespace hashing {
 namespace detail {

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableList.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableList.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableList.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableList.h Tue Jan 15 11:16:16 2013
@@ -33,9 +33,8 @@
 
   friend class ImmutableListFactory<T>;
 
-  // Do not implement.
-  void operator=(const ImmutableListImpl&);
-  ImmutableListImpl(const ImmutableListImpl&);
+  void operator=(const ImmutableListImpl&) LLVM_DELETED_FUNCTION;
+  ImmutableListImpl(const ImmutableListImpl&) LLVM_DELETED_FUNCTION;
 
 public:
   const T& getHead() const { return Head; }

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableMap.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableMap.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableMap.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableMap.h Tue Jan 15 11:16:16 2013
@@ -122,8 +122,8 @@
     }
 
   private:
-    Factory(const Factory& RHS); // DO NOT IMPLEMENT
-    void operator=(const Factory& RHS); // DO NOT IMPLEMENT
+    Factory(const Factory& RHS) LLVM_DELETED_FUNCTION;
+    void operator=(const Factory& RHS) LLVM_DELETED_FUNCTION;
   };
 
   bool contains(key_type_ref K) const {

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableSet.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableSet.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableSet.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/ImmutableSet.h Tue Jan 15 11:16:16 2013
@@ -22,7 +22,6 @@
 #include <cassert>
 #include <functional>
 #include <vector>
-#include <stdio.h>
 
 namespace llvm {
 
@@ -84,13 +83,13 @@
     }
     return NULL;
   }
-  
+
   /// getMaxElement - Find the subtree associated with the highest ranged
   ///  key value.
   ImutAVLTree* getMaxElement() {
     ImutAVLTree *T = this;
-    ImutAVLTree *Right = T->getRight();    
-    while (Right) { T = right; right = T->getRight(); }
+    ImutAVLTree *Right = T->getRight();
+    while (Right) { T = Right; Right = T->getRight(); }
     return T;
   }
 
@@ -258,7 +257,7 @@
   ///  method returns false for an instance of ImutAVLTree, all subtrees
   ///  will also have this method return false.  The converse is not true.
   bool isMutable() const { return IsMutable; }
-  
+
   /// hasCachedDigest - Returns true if the digest for this tree is cached.
   ///  This can only be true if the tree is immutable.
   bool hasCachedDigest() const { return IsDigestCached; }
@@ -280,7 +279,7 @@
     assert(isMutable() && "Mutable flag already removed.");
     IsMutable = false;
   }
-  
+
   /// markedCachedDigest - Clears the NoCachedDigest flag for a tree.
   void markedCachedDigest() {
     assert(!hasCachedDigest() && "NoCachedDigest flag already removed.");
@@ -349,7 +348,7 @@
       else
         factory->Cache[factory->maskCacheIndex(computeDigest())] = next;
     }
-    
+
     // We need to clear the mutability bit in case we are
     // destroying the node as part of a sweep in ImutAVLFactory::recoverNodes().
     IsMutable = false;
@@ -415,7 +414,7 @@
   TreeTy* getEmptyTree() const { return NULL; }
 
 protected:
-  
+
   //===--------------------------------------------------===//
   // A bunch of quick helper functions used for reasoning
   // about the properties of trees and their children.
@@ -461,7 +460,7 @@
   // returned to the caller.
   //===--------------------------------------------------===//
 
-  TreeTy* createNode(TreeTy* L, value_type_ref V, TreeTy* R) {   
+  TreeTy* createNode(TreeTy* L, value_type_ref V, TreeTy* R) {
     BumpPtrAllocator& A = getAllocator();
     TreeTy* T;
     if (!freeNodes.empty()) {
@@ -469,8 +468,7 @@
       freeNodes.pop_back();
       assert(T != L);
       assert(T != R);
-    }
-    else {
+    } else {
       T = (TreeTy*) A.Allocate<TreeTy>();
     }
     new (T) TreeTy(this, L, R, V, incrementHeight(L,R));
@@ -513,7 +511,8 @@
 
       return createNode(createNode(LL,L,LRL), LR, createNode(LRR,V,R));
     }
-    else if (hr > hl + 2) {
+
+    if (hr > hl + 2) {
       assert(!isEmpty(R) && "Right tree cannot be empty to have a height >= 2");
 
       TreeTy *RL = getLeft(R);
@@ -529,8 +528,8 @@
 
       return createNode(createNode(L,V,RLL), RL, createNode(RLR,R,RR));
     }
-    else
-      return createNode(L,V,R);
+
+    return createNode(L,V,R);
   }
 
   /// add_internal - Creates a new tree that includes the specified
@@ -604,7 +603,7 @@
     markImmutable(getLeft(T));
     markImmutable(getRight(T));
   }
-  
+
 public:
   TreeTy *getCanonicalTree(TreeTy *TNew) {
     if (!TNew)
@@ -937,7 +936,7 @@
 
 private:
   TreeTy *Root;
-  
+
 public:
   /// Constructs a set from a pointer to a tree root.  In general one
   /// should use a Factory object to create sets instead of directly
@@ -1006,10 +1005,10 @@
     typename TreeTy::Factory *getTreeFactory() const {
       return const_cast<typename TreeTy::Factory *>(&F);
     }
-    
+
   private:
-    Factory(const Factory& RHS); // DO NOT IMPLEMENT
-    void operator=(const Factory& RHS); // DO NOT IMPLEMENT
+    Factory(const Factory& RHS) LLVM_DELETED_FUNCTION;
+    void operator=(const Factory& RHS) LLVM_DELETED_FUNCTION;
   };
 
   friend class Factory;
@@ -1027,11 +1026,11 @@
     return Root && RHS.Root ? Root->isNotEqual(*RHS.Root) : Root != RHS.Root;
   }
 
-  TreeTy *getRoot() { 
+  TreeTy *getRoot() {
     if (Root) { Root->retain(); }
     return Root;
   }
-  
+
   TreeTy *getRootWithoutRetain() const {
     return Root;
   }
@@ -1092,7 +1091,7 @@
 
   void validateTree() const { if (Root) Root->validateTree(); }
 };
-  
+
 // NOTE: This may some day replace the current ImmutableSet.
 template <typename ValT, typename ValInfo = ImutContainerInfo<ValT> >
 class ImmutableSetRef {
@@ -1101,11 +1100,11 @@
   typedef typename ValInfo::value_type_ref  value_type_ref;
   typedef ImutAVLTree<ValInfo> TreeTy;
   typedef typename TreeTy::Factory          FactoryTy;
-  
+
 private:
   TreeTy *Root;
   FactoryTy *Factory;
-  
+
 public:
   /// Constructs a set from a pointer to a tree root.  In general one
   /// should use a Factory object to create sets instead of directly
@@ -1133,44 +1132,44 @@
   ~ImmutableSetRef() {
     if (Root) { Root->release(); }
   }
-  
+
   static inline ImmutableSetRef getEmptySet(FactoryTy *F) {
     return ImmutableSetRef(0, F);
   }
-  
+
   ImmutableSetRef add(value_type_ref V) {
     return ImmutableSetRef(Factory->add(Root, V), Factory);
   }
-  
+
   ImmutableSetRef remove(value_type_ref V) {
     return ImmutableSetRef(Factory->remove(Root, V), Factory);
   }
-    
+
   /// Returns true if the set contains the specified value.
   bool contains(value_type_ref V) const {
     return Root ? Root->contains(V) : false;
   }
-  
+
   ImmutableSet<ValT> asImmutableSet(bool canonicalize = true) const {
     return ImmutableSet<ValT>(canonicalize ?
                               Factory->getCanonicalTree(Root) : Root);
   }
-  
+
   TreeTy *getRootWithoutRetain() const {
     return Root;
   }
-  
+
   bool operator==(const ImmutableSetRef &RHS) const {
     return Root && RHS.Root ? Root->isEqual(*RHS.Root) : Root == RHS.Root;
   }
-  
+
   bool operator!=(const ImmutableSetRef &RHS) const {
     return Root && RHS.Root ? Root->isNotEqual(*RHS.Root) : Root != RHS.Root;
   }
 
   /// isEmpty - Return true if the set contains no elements.
   bool isEmpty() const { return !Root; }
-  
+
   /// isSingleton - Return true if the set contains exactly one element.
   ///   This method runs in constant time.
   bool isSingleton() const { return getHeight() == 1; }
@@ -1178,7 +1177,7 @@
   //===--------------------------------------------------===//
   // Iterators.
   //===--------------------------------------------------===//
-  
+
   class iterator {
     typename TreeTy::iterator itr;
     iterator(TreeTy* t) : itr(t) {}
@@ -1194,28 +1193,28 @@
     inline bool operator!=(const iterator& RHS) const { return RHS.itr != itr; }
     inline value_type *operator->() const { return &(operator*()); }
   };
-  
+
   iterator begin() const { return iterator(Root); }
   iterator end() const { return iterator(); }
-  
+
   //===--------------------------------------------------===//
   // Utility methods.
   //===--------------------------------------------------===//
-  
+
   unsigned getHeight() const { return Root ? Root->getHeight() : 0; }
-  
+
   static inline void Profile(FoldingSetNodeID& ID, const ImmutableSetRef& S) {
     ID.AddPointer(S.Root);
   }
-  
+
   inline void Profile(FoldingSetNodeID& ID) const {
     return Profile(ID,*this);
   }
-  
+
   //===--------------------------------------------------===//
   // For testing.
   //===--------------------------------------------------===//
-  
+
   void validateTree() const { if (Root) Root->validateTree(); }
 };
 

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/Optional.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/Optional.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/Optional.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/Optional.h Tue Jan 15 11:16:16 2013
@@ -16,8 +16,13 @@
 #ifndef LLVM_ADT_OPTIONAL
 #define LLVM_ADT_OPTIONAL
 
+#include "llvm/Support/Compiler.h"
 #include <cassert>
 
+#if LLVM_USE_RVALUE_REFERENCES
+#include <utility>
+#endif
+
 namespace llvm {
 
 template<typename T>
@@ -28,6 +33,10 @@
   explicit Optional() : x(), hasVal(false) {}
   Optional(const T &y) : x(y), hasVal(true) {}
 
+#if LLVM_USE_RVALUE_REFERENCES
+  Optional(T &&y) : x(std::forward<T>(y)), hasVal(true) {}
+#endif
+
   static inline Optional create(const T* y) {
     return y ? Optional(*y) : Optional();
   }

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/OwningPtr.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/OwningPtr.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/OwningPtr.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/OwningPtr.h Tue Jan 15 11:16:16 2013
@@ -14,6 +14,7 @@
 #ifndef LLVM_ADT_OWNING_PTR_H
 #define LLVM_ADT_OWNING_PTR_H
 
+#include "llvm/Support/Compiler.h"
 #include <cassert>
 #include <cstddef>
 
@@ -25,12 +26,21 @@
 /// pointee object can be taken away from OwningPtr by using the take method.
 template<class T>
 class OwningPtr {
-  OwningPtr(OwningPtr const &);             // DO NOT IMPLEMENT
-  OwningPtr &operator=(OwningPtr const &);  // DO NOT IMPLEMENT
+  OwningPtr(OwningPtr const &) LLVM_DELETED_FUNCTION;
+  OwningPtr &operator=(OwningPtr const &) LLVM_DELETED_FUNCTION;
   T *Ptr;
 public:
   explicit OwningPtr(T *P = 0) : Ptr(P) {}
 
+#if LLVM_USE_RVALUE_REFERENCES
+  OwningPtr(OwningPtr &&Other) : Ptr(Other.take()) {}
+
+  OwningPtr &operator=(OwningPtr &&Other) {
+    reset(Other.take());
+    return *this;
+  }
+#endif
+
   ~OwningPtr() {
     delete Ptr;
   }
@@ -79,12 +89,21 @@
 ///  functionality as OwningPtr, except that it works for array types.
 template<class T>
 class OwningArrayPtr {
-  OwningArrayPtr(OwningArrayPtr const &);            // DO NOT IMPLEMENT
-  OwningArrayPtr &operator=(OwningArrayPtr const &); // DO NOT IMPLEMENT
+  OwningArrayPtr(OwningArrayPtr const &) LLVM_DELETED_FUNCTION;
+  OwningArrayPtr &operator=(OwningArrayPtr const &) LLVM_DELETED_FUNCTION;
   T *Ptr;
 public:
   explicit OwningArrayPtr(T *P = 0) : Ptr(P) {}
 
+#if LLVM_USE_RVALUE_REFERENCES
+  OwningArrayPtr(OwningArrayPtr &&Other) : Ptr(Other.take()) {}
+
+  OwningArrayPtr &operator=(OwningArrayPtr &&Other) {
+    reset(Other.take());
+    return *this;
+  }
+#endif
+
   ~OwningArrayPtr() {
     delete [] Ptr;
   }

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/PackedVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/PackedVector.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/PackedVector.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/PackedVector.h Tue Jan 15 11:16:16 2013
@@ -19,32 +19,32 @@
 
 namespace llvm {
 
-template <typename T, unsigned BitNum, bool isSigned>
+template <typename T, unsigned BitNum, typename BitVectorTy, bool isSigned>
 class PackedVectorBase;
 
 // This won't be necessary if we can specialize members without specializing
 // the parent template.
-template <typename T, unsigned BitNum>
-class PackedVectorBase<T, BitNum, false> {
+template <typename T, unsigned BitNum, typename BitVectorTy>
+class PackedVectorBase<T, BitNum, BitVectorTy, false> {
 protected:
-  static T getValue(const llvm::BitVector &Bits, unsigned Idx) {
+  static T getValue(const BitVectorTy &Bits, unsigned Idx) {
     T val = T();
     for (unsigned i = 0; i != BitNum; ++i)
       val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i));
     return val;
   }
 
-  static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) {
+  static void setValue(BitVectorTy &Bits, unsigned Idx, T val) {
     assert((val >> BitNum) == 0 && "value is too big");
     for (unsigned i = 0; i != BitNum; ++i)
       Bits[(Idx << (BitNum-1)) + i] = val & (T(1) << i);
   }
 };
 
-template <typename T, unsigned BitNum>
-class PackedVectorBase<T, BitNum, true> {
+template <typename T, unsigned BitNum, typename BitVectorTy>
+class PackedVectorBase<T, BitNum, BitVectorTy, true> {
 protected:
-  static T getValue(const llvm::BitVector &Bits, unsigned Idx) {
+  static T getValue(const BitVectorTy &Bits, unsigned Idx) {
     T val = T();
     for (unsigned i = 0; i != BitNum-1; ++i)
       val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i));
@@ -53,7 +53,7 @@
     return val;
   }
 
-  static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) {
+  static void setValue(BitVectorTy &Bits, unsigned Idx, T val) {
     if (val < 0) {
       val = ~val;
       Bits.set((Idx << (BitNum-1)) + BitNum-1);
@@ -71,11 +71,12 @@
 /// @endcode
 /// will create a vector accepting values -2, -1, 0, 1. Any other value will hit
 /// an assertion.
-template <typename T, unsigned BitNum>
-class PackedVector : public PackedVectorBase<T, BitNum,
+template <typename T, unsigned BitNum, typename BitVectorTy = BitVector>
+class PackedVector : public PackedVectorBase<T, BitNum, BitVectorTy,
                                             std::numeric_limits<T>::is_signed> {
-  llvm::BitVector Bits;
-  typedef PackedVectorBase<T, BitNum, std::numeric_limits<T>::is_signed> base;
+  BitVectorTy Bits;
+  typedef PackedVectorBase<T, BitNum, BitVectorTy,
+                           std::numeric_limits<T>::is_signed> base;
 
 public:
   class reference {

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/PointerIntPair.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/PointerIntPair.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/PointerIntPair.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/PointerIntPair.h Tue Jan 15 11:16:16 2013
@@ -135,12 +135,12 @@
 struct DenseMapInfo<PointerIntPair<PointerTy, IntBits, IntType> > {
   typedef PointerIntPair<PointerTy, IntBits, IntType> Ty;
   static Ty getEmptyKey() {
-    intptr_t Val = -1;
+    uintptr_t Val = static_cast<uintptr_t>(-1);
     Val <<= PointerLikeTypeTraits<PointerTy>::NumLowBitsAvailable;
     return Ty(reinterpret_cast<PointerTy>(Val), IntType((1 << IntBits)-1));
   }
   static Ty getTombstoneKey() {
-    intptr_t Val = -2;
+    uintptr_t Val = static_cast<uintptr_t>(-2);
     Val <<= PointerLikeTypeTraits<PointerTy>::NumLowBitsAvailable;
     return Ty(reinterpret_cast<PointerTy>(Val), IntType(0));
   }

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/ScopedHashTable.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/ScopedHashTable.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/ScopedHashTable.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/ScopedHashTable.h Tue Jan 15 11:16:16 2013
@@ -90,8 +90,8 @@
   /// LastValInScope - This is the last value that was inserted for this scope
   /// or null if none have been inserted yet.
   ScopedHashTableVal<K, V> *LastValInScope;
-  void operator=(ScopedHashTableScope&);       // DO NOT IMPLEMENT
-  ScopedHashTableScope(ScopedHashTableScope&); // DO NOT IMPLEMENT
+  void operator=(ScopedHashTableScope&) LLVM_DELETED_FUNCTION;
+  ScopedHashTableScope(ScopedHashTableScope&) LLVM_DELETED_FUNCTION;
 public:
   ScopedHashTableScope(ScopedHashTable<K, V, KInfo, AllocatorTy> &HT);
   ~ScopedHashTableScope();

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/SetVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/SetVector.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/SetVector.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/SetVector.h Tue Jan 15 11:16:16 2013
@@ -27,10 +27,11 @@
 
 namespace llvm {
 
+/// \brief A vector that has set insertion semantics.
+///
 /// This adapter class provides a way to keep a set of things that also has the
 /// property of a deterministic iteration order. The order of iteration is the
 /// order of insertion.
-/// @brief A vector that has set insertion semantics.
 template <typename T, typename Vector = std::vector<T>,
                       typename Set = SmallSet<T, 16> >
 class SetVector {
@@ -45,59 +46,59 @@
   typedef typename vector_type::const_iterator const_iterator;
   typedef typename vector_type::size_type size_type;
 
-  /// @brief Construct an empty SetVector
+  /// \brief Construct an empty SetVector
   SetVector() {}
 
-  /// @brief Initialize a SetVector with a range of elements
+  /// \brief Initialize a SetVector with a range of elements
   template<typename It>
   SetVector(It Start, It End) {
     insert(Start, End);
   }
 
-  /// @brief Determine if the SetVector is empty or not.
+  /// \brief Determine if the SetVector is empty or not.
   bool empty() const {
     return vector_.empty();
   }
 
-  /// @brief Determine the number of elements in the SetVector.
+  /// \brief Determine the number of elements in the SetVector.
   size_type size() const {
     return vector_.size();
   }
 
-  /// @brief Get an iterator to the beginning of the SetVector.
+  /// \brief Get an iterator to the beginning of the SetVector.
   iterator begin() {
     return vector_.begin();
   }
 
-  /// @brief Get a const_iterator to the beginning of the SetVector.
+  /// \brief Get a const_iterator to the beginning of the SetVector.
   const_iterator begin() const {
     return vector_.begin();
   }
 
-  /// @brief Get an iterator to the end of the SetVector.
+  /// \brief Get an iterator to the end of the SetVector.
   iterator end() {
     return vector_.end();
   }
 
-  /// @brief Get a const_iterator to the end of the SetVector.
+  /// \brief Get a const_iterator to the end of the SetVector.
   const_iterator end() const {
     return vector_.end();
   }
 
-  /// @brief Return the last element of the SetVector.
+  /// \brief Return the last element of the SetVector.
   const T &back() const {
     assert(!empty() && "Cannot call back() on empty SetVector!");
     return vector_.back();
   }
 
-  /// @brief Index into the SetVector.
+  /// \brief Index into the SetVector.
   const_reference operator[](size_type n) const {
     assert(n < vector_.size() && "SetVector access out of range!");
     return vector_[n];
   }
 
-  /// @returns true iff the element was inserted into the SetVector.
-  /// @brief Insert a new element into the SetVector.
+  /// \brief Insert a new element into the SetVector.
+  /// \returns true iff the element was inserted into the SetVector.
   bool insert(const value_type &X) {
     bool result = set_.insert(X);
     if (result)
@@ -105,7 +106,7 @@
     return result;
   }
 
-  /// @brief Insert a range of elements into the SetVector.
+  /// \brief Insert a range of elements into the SetVector.
   template<typename It>
   void insert(It Start, It End) {
     for (; Start != End; ++Start)
@@ -113,7 +114,7 @@
         vector_.push_back(*Start);
   }
 
-  /// @brief Remove an item from the set vector.
+  /// \brief Remove an item from the set vector.
   bool remove(const value_type& X) {
     if (set_.erase(X)) {
       typename vector_type::iterator I =
@@ -125,20 +126,44 @@
     return false;
   }
 
+  /// \brief Remove items from the set vector based on a predicate function.
+  ///
+  /// This is intended to be equivalent to the following code, if we could
+  /// write it:
+  ///
+  /// \code
+  ///   V.erase(std::remove_if(V.begin(), V.end(), P), V.end());
+  /// \endcode
+  ///
+  /// However, SetVector doesn't expose non-const iterators, making any
+  /// algorithm like remove_if impossible to use.
+  ///
+  /// \returns true if any element is removed.
+  template <typename UnaryPredicate>
+  bool remove_if(UnaryPredicate P) {
+    typename vector_type::iterator I
+      = std::remove_if(vector_.begin(), vector_.end(),
+                       TestAndEraseFromSet<UnaryPredicate>(P, set_));
+    if (I == vector_.end())
+      return false;
+    vector_.erase(I, vector_.end());
+    return true;
+  }
+
 
-  /// @returns 0 if the element is not in the SetVector, 1 if it is.
-  /// @brief Count the number of elements of a given key in the SetVector.
+  /// \brief Count the number of elements of a given key in the SetVector.
+  /// \returns 0 if the element is not in the SetVector, 1 if it is.
   size_type count(const key_type &key) const {
     return set_.count(key);
   }
 
-  /// @brief Completely clear the SetVector
+  /// \brief Completely clear the SetVector
   void clear() {
     set_.clear();
     vector_.clear();
   }
 
-  /// @brief Remove the last element of the SetVector.
+  /// \brief Remove the last element of the SetVector.
   void pop_back() {
     assert(!empty() && "Cannot remove an element from an empty SetVector!");
     set_.erase(back());
@@ -160,18 +185,41 @@
   }
 
 private:
+  /// \brief A wrapper predicate designed for use with std::remove_if.
+  ///
+  /// This predicate wraps a predicate suitable for use with std::remove_if to
+  /// call set_.erase(x) on each element which is slated for removal.
+  template <typename UnaryPredicate>
+  class TestAndEraseFromSet {
+    UnaryPredicate P;
+    set_type &set_;
+
+  public:
+    typedef typename UnaryPredicate::argument_type argument_type;
+
+    TestAndEraseFromSet(UnaryPredicate P, set_type &set_) : P(P), set_(set_) {}
+
+    bool operator()(argument_type Arg) {
+      if (P(Arg)) {
+        set_.erase(Arg);
+        return true;
+      }
+      return false;
+    }
+  };
+
   set_type set_;         ///< The set.
   vector_type vector_;   ///< The vector.
 };
 
-/// SmallSetVector - A SetVector that performs no allocations if smaller than
+/// \brief A SetVector that performs no allocations if smaller than
 /// a certain size.
 template <typename T, unsigned N>
 class SmallSetVector : public SetVector<T, SmallVector<T, N>, SmallSet<T, N> > {
 public:
   SmallSetVector() {}
 
-  /// @brief Initialize a SmallSetVector with a range of elements
+  /// \brief Initialize a SmallSetVector with a range of elements
   template<typename It>
   SmallSetVector(It Start, It End) {
     this->insert(Start, End);

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/SmallBitVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/SmallBitVector.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/SmallBitVector.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/SmallBitVector.h Tue Jan 15 11:16:16 2013
@@ -300,6 +300,21 @@
     return *this;
   }
 
+  /// set - Efficiently set a range of bits in [I, E)
+  SmallBitVector &set(unsigned I, unsigned E) {
+    assert(I <= E && "Attempted to set backwards range!");
+    assert(E <= size() && "Attempted to set out-of-bounds range!");
+    if (I == E) return *this;
+    if (isSmall()) {
+      uintptr_t EMask = ((uintptr_t)1) << E;
+      uintptr_t IMask = ((uintptr_t)1) << I;
+      uintptr_t Mask = EMask - IMask;
+      setSmallBits(getSmallBits() | Mask);
+    } else
+      getPointer()->set(I, E);
+    return *this;
+  }
+
   SmallBitVector &reset() {
     if (isSmall())
       setSmallBits(0);
@@ -316,6 +331,21 @@
     return *this;
   }
 
+  /// reset - Efficiently reset a range of bits in [I, E)
+  SmallBitVector &reset(unsigned I, unsigned E) {
+    assert(I <= E && "Attempted to reset backwards range!");
+    assert(E <= size() && "Attempted to reset out-of-bounds range!");
+    if (I == E) return *this;
+    if (isSmall()) {
+      uintptr_t EMask = ((uintptr_t)1) << E;
+      uintptr_t IMask = ((uintptr_t)1) << I;
+      uintptr_t Mask = EMask - IMask;
+      setSmallBits(getSmallBits() & ~Mask);
+    } else
+      getPointer()->reset(I, E);
+    return *this;
+  }
+
   SmallBitVector &flip() {
     if (isSmall())
       setSmallBits(~getSmallBits());

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/SmallPtrSet.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/SmallPtrSet.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/SmallPtrSet.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/SmallPtrSet.h Tue Jan 15 11:16:16 2013
@@ -15,12 +15,13 @@
 #ifndef LLVM_ADT_SMALLPTRSET_H
 #define LLVM_ADT_SMALLPTRSET_H
 
+#include "llvm/Support/Compiler.h"
+#include "llvm/Support/DataTypes.h"
+#include "llvm/Support/PointerLikeTypeTraits.h"
 #include <cassert>
 #include <cstddef>
 #include <cstring>
 #include <iterator>
-#include "llvm/Support/DataTypes.h"
-#include "llvm/Support/PointerLikeTypeTraits.h"
 
 namespace llvm {
 
@@ -132,7 +133,7 @@
   /// Grow - Allocate a larger backing store for the buckets and move it over.
   void Grow(unsigned NewSize);
 
-  void operator=(const SmallPtrSetImpl &RHS);  // DO NOT IMPLEMENT.
+  void operator=(const SmallPtrSetImpl &RHS) LLVM_DELETED_FUNCTION;
 protected:
   /// swap - Swaps the elements of two sets.
   /// Note: This method assumes that both sets have the same small size.

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/SmallString.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/SmallString.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/SmallString.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/SmallString.h Tue Jan 15 11:16:16 2013
@@ -44,25 +44,25 @@
   /// @name String Assignment
   /// @{
 
-  /// Assign from a repeated element
+  /// Assign from a repeated element.
   void assign(size_t NumElts, char Elt) {
     this->SmallVectorImpl<char>::assign(NumElts, Elt);
   }
 
-  /// Assign from an iterator pair
+  /// Assign from an iterator pair.
   template<typename in_iter>
   void assign(in_iter S, in_iter E) {
     this->clear();
     SmallVectorImpl<char>::append(S, E);
   }
 
-  /// Assign from a StringRef
+  /// Assign from a StringRef.
   void assign(StringRef RHS) {
     this->clear();
     SmallVectorImpl<char>::append(RHS.begin(), RHS.end());
   }
 
-  /// Assign from a SmallVector
+  /// Assign from a SmallVector.
   void assign(const SmallVectorImpl<char> &RHS) {
     this->clear();
     SmallVectorImpl<char>::append(RHS.begin(), RHS.end());
@@ -72,7 +72,7 @@
   /// @name String Concatenation
   /// @{
 
-  /// Append from an iterator pair
+  /// Append from an iterator pair.
   template<typename in_iter>
   void append(in_iter S, in_iter E) {
     SmallVectorImpl<char>::append(S, E);
@@ -83,12 +83,12 @@
   }
 
 
-  /// Append from a StringRef
+  /// Append from a StringRef.
   void append(StringRef RHS) {
     SmallVectorImpl<char>::append(RHS.begin(), RHS.end());
   }
 
-  /// Append from a SmallVector
+  /// Append from a SmallVector.
   void append(const SmallVectorImpl<char> &RHS) {
     SmallVectorImpl<char>::append(RHS.begin(), RHS.end());
   }
@@ -97,19 +97,19 @@
   /// @name String Comparison
   /// @{
 
-  /// equals - Check for string equality, this is more efficient than
-  /// compare() when the relative ordering of inequal strings isn't needed.
+  /// Check for string equality.  This is more efficient than compare() when
+  /// the relative ordering of inequal strings isn't needed.
   bool equals(StringRef RHS) const {
     return str().equals(RHS);
   }
 
-  /// equals_lower - Check for string equality, ignoring case.
+  /// Check for string equality, ignoring case.
   bool equals_lower(StringRef RHS) const {
     return str().equals_lower(RHS);
   }
 
-  /// compare - Compare two strings; the result is -1, 0, or 1 if this string
-  /// is lexicographically less than, equal to, or greater than the \arg RHS.
+  /// Compare two strings; the result is -1, 0, or 1 if this string is
+  /// lexicographically less than, equal to, or greater than the \p RHS.
   int compare(StringRef RHS) const {
     return str().compare(RHS);
   }
@@ -129,12 +129,12 @@
   /// @name String Predicates
   /// @{
 
-  /// startswith - Check if this string starts with the given \arg Prefix.
+  /// startswith - Check if this string starts with the given \p Prefix.
   bool startswith(StringRef Prefix) const {
     return str().startswith(Prefix);
   }
 
-  /// endswith - Check if this string ends with the given \arg Suffix.
+  /// endswith - Check if this string ends with the given \p Suffix.
   bool endswith(StringRef Suffix) const {
     return str().endswith(Suffix);
   }
@@ -143,76 +143,76 @@
   /// @name String Searching
   /// @{
 
-  /// find - Search for the first character \arg C in the string.
+  /// find - Search for the first character \p C in the string.
   ///
-  /// \return - The index of the first occurrence of \arg C, or npos if not
+  /// \return - The index of the first occurrence of \p C, or npos if not
   /// found.
   size_t find(char C, size_t From = 0) const {
     return str().find(C, From);
   }
 
-  /// find - Search for the first string \arg Str in the string.
+  /// Search for the first string \p Str in the string.
   ///
-  /// \return - The index of the first occurrence of \arg Str, or npos if not
+  /// \returns The index of the first occurrence of \p Str, or npos if not
   /// found.
   size_t find(StringRef Str, size_t From = 0) const {
     return str().find(Str, From);
   }
 
-  /// rfind - Search for the last character \arg C in the string.
+  /// Search for the last character \p C in the string.
   ///
-  /// \return - The index of the last occurrence of \arg C, or npos if not
+  /// \returns The index of the last occurrence of \p C, or npos if not
   /// found.
   size_t rfind(char C, size_t From = StringRef::npos) const {
     return str().rfind(C, From);
   }
 
-  /// rfind - Search for the last string \arg Str in the string.
+  /// Search for the last string \p Str in the string.
   ///
-  /// \return - The index of the last occurrence of \arg Str, or npos if not
+  /// \returns The index of the last occurrence of \p Str, or npos if not
   /// found.
   size_t rfind(StringRef Str) const {
     return str().rfind(Str);
   }
 
-  /// find_first_of - Find the first character in the string that is \arg C,
-  /// or npos if not found. Same as find.
+  /// Find the first character in the string that is \p C, or npos if not
+  /// found. Same as find.
   size_t find_first_of(char C, size_t From = 0) const {
     return str().find_first_of(C, From);
   }
 
-  /// find_first_of - Find the first character in the string that is in \arg
-  /// Chars, or npos if not found.
+  /// Find the first character in the string that is in \p Chars, or npos if
+  /// not found.
   ///
-  /// Note: O(size() + Chars.size())
+  /// Complexity: O(size() + Chars.size())
   size_t find_first_of(StringRef Chars, size_t From = 0) const {
     return str().find_first_of(Chars, From);
   }
 
-  /// find_first_not_of - Find the first character in the string that is not
-  /// \arg C or npos if not found.
+  /// Find the first character in the string that is not \p C or npos if not
+  /// found.
   size_t find_first_not_of(char C, size_t From = 0) const {
     return str().find_first_not_of(C, From);
   }
 
-  /// find_first_not_of - Find the first character in the string that is not
-  /// in the string \arg Chars, or npos if not found.
+  /// Find the first character in the string that is not in the string
+  /// \p Chars, or npos if not found.
   ///
-  /// Note: O(size() + Chars.size())
+  /// Complexity: O(size() + Chars.size())
   size_t find_first_not_of(StringRef Chars, size_t From = 0) const {
     return str().find_first_not_of(Chars, From);
   }
 
-  /// find_last_of - Find the last character in the string that is \arg C, or
-  /// npos if not found.
+  /// Find the last character in the string that is \p C, or npos if not
+  /// found.
   size_t find_last_of(char C, size_t From = StringRef::npos) const {
     return str().find_last_of(C, From);
   }
 
-  /// find_last_of - Find the last character in the string that is in \arg C,
-  /// or npos if not found.
+  /// Find the last character in the string that is in \p C, or npos if not
+  /// found.
   ///
-  /// Note: O(size() + Chars.size())
+  /// Complexity: O(size() + Chars.size())
   size_t find_last_of(
       StringRef Chars, size_t From = StringRef::npos) const {
     return str().find_last_of(Chars, From);
@@ -222,13 +222,13 @@
   /// @name Helpful Algorithms
   /// @{
 
-  /// count - Return the number of occurrences of \arg C in the string.
+  /// Return the number of occurrences of \p C in the string.
   size_t count(char C) const {
     return str().count(C);
   }
 
-  /// count - Return the number of non-overlapped occurrences of \arg Str in
-  /// the string.
+  /// Return the number of non-overlapped occurrences of \p Str in the
+  /// string.
   size_t count(StringRef Str) const {
     return str().count(Str);
   }
@@ -237,36 +237,36 @@
   /// @name Substring Operations
   /// @{
 
-  /// substr - Return a reference to the substring from [Start, Start + N).
+  /// Return a reference to the substring from [Start, Start + N).
   ///
-  /// \param Start - The index of the starting character in the substring; if
+  /// \param Start The index of the starting character in the substring; if
   /// the index is npos or greater than the length of the string then the
   /// empty substring will be returned.
   ///
-  /// \param N - The number of characters to included in the substring. If N
+  /// \param N The number of characters to included in the substring. If \p N
   /// exceeds the number of characters remaining in the string, the string
-  /// suffix (starting with \arg Start) will be returned.
+  /// suffix (starting with \p Start) will be returned.
   StringRef substr(size_t Start, size_t N = StringRef::npos) const {
     return str().substr(Start, N);
   }
 
-  /// slice - Return a reference to the substring from [Start, End).
+  /// Return a reference to the substring from [Start, End).
   ///
-  /// \param Start - The index of the starting character in the substring; if
+  /// \param Start The index of the starting character in the substring; if
   /// the index is npos or greater than the length of the string then the
   /// empty substring will be returned.
   ///
-  /// \param End - The index following the last character to include in the
-  /// substring. If this is npos, or less than \arg Start, or exceeds the
+  /// \param End The index following the last character to include in the
+  /// substring. If this is npos, or less than \p Start, or exceeds the
   /// number of characters remaining in the string, the string suffix
-  /// (starting with \arg Start) will be returned.
+  /// (starting with \p Start) will be returned.
   StringRef slice(size_t Start, size_t End) const {
     return str().slice(Start, End);
   }
 
   // Extra methods.
 
-  /// Explicit conversion to StringRef
+  /// Explicit conversion to StringRef.
   StringRef str() const { return StringRef(this->begin(), this->size()); }
 
   // TODO: Make this const, if it's safe...

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/SmallVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/SmallVector.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/SmallVector.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/SmallVector.h Tue Jan 15 11:16:16 2013
@@ -14,6 +14,7 @@
 #ifndef LLVM_ADT_SMALLVECTOR_H
 #define LLVM_ADT_SMALLVECTOR_H
 
+#include "llvm/Support/AlignOf.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/type_traits.h"
 #include <algorithm>
@@ -32,44 +33,20 @@
 protected:
   void *BeginX, *EndX, *CapacityX;
 
-  // Allocate raw space for N elements of type T.  If T has a ctor or dtor, we
-  // don't want it to be automatically run, so we need to represent the space as
-  // something else.  An array of char would work great, but might not be
-  // aligned sufficiently.  Instead we use some number of union instances for
-  // the space, which guarantee maximal alignment.
-  union U {
-    double D;
-    long double LD;
-    long long L;
-    void *P;
-  } FirstEl;
-  // Space after 'FirstEl' is clobbered, do not add any instance vars after it.
-
 protected:
-  SmallVectorBase(size_t Size)
-    : BeginX(&FirstEl), EndX(&FirstEl), CapacityX((char*)&FirstEl+Size) {}
-
-  /// isSmall - Return true if this is a smallvector which has not had dynamic
-  /// memory allocated for it.
-  bool isSmall() const {
-    return BeginX == static_cast<const void*>(&FirstEl);
-  }
-
-  /// resetToSmall - Put this vector in a state of being small.
-  void resetToSmall() {
-    BeginX = EndX = CapacityX = &FirstEl;
-  }
+  SmallVectorBase(void *FirstEl, size_t Size)
+    : BeginX(FirstEl), EndX(FirstEl), CapacityX((char*)FirstEl+Size) {}
 
   /// grow_pod - This is an implementation of the grow() method which only works
   /// on POD-like data types and is out of line to reduce code duplication.
-  void grow_pod(size_t MinSizeInBytes, size_t TSize);
+  void grow_pod(void *FirstEl, size_t MinSizeInBytes, size_t TSize);
 
 public:
   /// size_in_bytes - This returns size()*sizeof(T).
   size_t size_in_bytes() const {
     return size_t((char*)EndX - (char*)BeginX);
   }
-  
+
   /// capacity_in_bytes - This returns capacity()*sizeof(T).
   size_t capacity_in_bytes() const {
     return size_t((char*)CapacityX - (char*)BeginX);
@@ -78,11 +55,41 @@
   bool empty() const { return BeginX == EndX; }
 };
 
+template <typename T, unsigned N> struct SmallVectorStorage;
 
-template <typename T>
+/// SmallVectorTemplateCommon - This is the part of SmallVectorTemplateBase
+/// which does not depend on whether the type T is a POD. The extra dummy
+/// template argument is used by ArrayRef to avoid unnecessarily requiring T
+/// to be complete.
+template <typename T, typename = void>
 class SmallVectorTemplateCommon : public SmallVectorBase {
+private:
+  template <typename, unsigned> friend struct SmallVectorStorage;
+
+  // Allocate raw space for N elements of type T.  If T has a ctor or dtor, we
+  // don't want it to be automatically run, so we need to represent the space as
+  // something else.  Use an array of char of sufficient alignment.
+  typedef llvm::AlignedCharArrayUnion<T> U;
+  U FirstEl;
+  // Space after 'FirstEl' is clobbered, do not add any instance vars after it.
+
 protected:
-  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(Size) {}
+  SmallVectorTemplateCommon(size_t Size) : SmallVectorBase(&FirstEl, Size) {}
+
+  void grow_pod(size_t MinSizeInBytes, size_t TSize) {
+    SmallVectorBase::grow_pod(&FirstEl, MinSizeInBytes, TSize);
+  }
+
+  /// isSmall - Return true if this is a smallvector which has not had dynamic
+  /// memory allocated for it.
+  bool isSmall() const {
+    return BeginX == static_cast<const void*>(&FirstEl);
+  }
+
+  /// resetToSmall - Put this vector in a state of being small.
+  void resetToSmall() {
+    BeginX = EndX = CapacityX = &FirstEl;
+  }
 
   void setEnd(T *P) { this->EndX = P; }
 public:
@@ -677,8 +684,8 @@
                                         RHS.begin(), RHS.end());
   }
 
-  /// set_size - Set the array size to \arg N, which the current array must have
-  /// enough capacity for.
+  /// Set the array size to \p N, which the current array must have enough
+  /// capacity for.
   ///
   /// This does not construct or destroy any elements in the vector.
   ///
@@ -844,6 +851,17 @@
 }
 #endif
 
+/// Storage for the SmallVector elements which aren't contained in
+/// SmallVectorTemplateCommon. There are 'N-1' elements here. The remaining '1'
+/// element is in the base class. This is specialized for the N=1 and N=0 cases
+/// to avoid allocating unnecessary storage.
+template <typename T, unsigned N>
+struct SmallVectorStorage {
+  typename SmallVectorTemplateCommon<T>::U InlineElts[N - 1];
+};
+template <typename T> struct SmallVectorStorage<T, 1> {};
+template <typename T> struct SmallVectorStorage<T, 0> {};
+
 /// SmallVector - This is a 'vector' (really, a variable-sized array), optimized
 /// for the case when the array is small.  It contains some number of elements
 /// in-place, which allows it to avoid heap allocation when the actual number of
@@ -854,41 +872,23 @@
 ///
 template <typename T, unsigned N>
 class SmallVector : public SmallVectorImpl<T> {
-  /// InlineElts - These are 'N-1' elements that are stored inline in the body
-  /// of the vector.  The extra '1' element is stored in SmallVectorImpl.
-  typedef typename SmallVectorImpl<T>::U U;
-  enum {
-    // MinUs - The number of U's require to cover N T's.
-    MinUs = (static_cast<unsigned int>(sizeof(T))*N +
-             static_cast<unsigned int>(sizeof(U)) - 1) /
-            static_cast<unsigned int>(sizeof(U)),
-
-    // NumInlineEltsElts - The number of elements actually in this array.  There
-    // is already one in the parent class, and we have to round up to avoid
-    // having a zero-element array.
-    NumInlineEltsElts = MinUs > 1 ? (MinUs - 1) : 1,
-
-    // NumTsAvailable - The number of T's we actually have space for, which may
-    // be more than N due to rounding.
-    NumTsAvailable = (NumInlineEltsElts+1)*static_cast<unsigned int>(sizeof(U))/
-                     static_cast<unsigned int>(sizeof(T))
-  };
-  U InlineElts[NumInlineEltsElts];
+  /// Storage - Inline space for elements which aren't stored in the base class.
+  SmallVectorStorage<T, N> Storage;
 public:
-  SmallVector() : SmallVectorImpl<T>(NumTsAvailable) {
+  SmallVector() : SmallVectorImpl<T>(N) {
   }
 
   explicit SmallVector(unsigned Size, const T &Value = T())
-    : SmallVectorImpl<T>(NumTsAvailable) {
+    : SmallVectorImpl<T>(N) {
     this->assign(Size, Value);
   }
 
   template<typename ItTy>
-  SmallVector(ItTy S, ItTy E) : SmallVectorImpl<T>(NumTsAvailable) {
+  SmallVector(ItTy S, ItTy E) : SmallVectorImpl<T>(N) {
     this->append(S, E);
   }
 
-  SmallVector(const SmallVector &RHS) : SmallVectorImpl<T>(NumTsAvailable) {
+  SmallVector(const SmallVector &RHS) : SmallVectorImpl<T>(N) {
     if (!RHS.empty())
       SmallVectorImpl<T>::operator=(RHS);
   }
@@ -899,7 +899,7 @@
   }
 
 #if LLVM_USE_RVALUE_REFERENCES
-  SmallVector(SmallVector &&RHS) : SmallVectorImpl<T>(NumTsAvailable) {
+  SmallVector(SmallVector &&RHS) : SmallVectorImpl<T>(N) {
     if (!RHS.empty())
       SmallVectorImpl<T>::operator=(::std::move(RHS));
   }
@@ -912,48 +912,6 @@
 
 };
 
-/// Specialize SmallVector at N=0.  This specialization guarantees
-/// that it can be instantiated at an incomplete T if none of its
-/// members are required.
-template <typename T>
-class SmallVector<T,0> : public SmallVectorImpl<T> {
-public:
-  SmallVector() : SmallVectorImpl<T>(0) {
-  }
-
-  explicit SmallVector(unsigned Size, const T &Value = T())
-    : SmallVectorImpl<T>(0) {
-    this->assign(Size, Value);
-  }
-
-  template<typename ItTy>
-  SmallVector(ItTy S, ItTy E) : SmallVectorImpl<T>(0) {
-    this->append(S, E);
-  }
-
-  SmallVector(const SmallVector &RHS) : SmallVectorImpl<T>(0) {
-    if (!RHS.empty())
-      SmallVectorImpl<T>::operator=(RHS);
-  }
-
-  const SmallVector &operator=(const SmallVector &RHS) {
-    SmallVectorImpl<T>::operator=(RHS);
-    return *this;
-  }
-
-#if LLVM_USE_RVALUE_REFERENCES
-  SmallVector(SmallVector &&RHS) : SmallVectorImpl<T>(0) {
-    if (!RHS.empty())
-      SmallVectorImpl<T>::operator=(::std::move(RHS));
-  }
-
-  const SmallVector &operator=(SmallVector &&RHS) {
-    SmallVectorImpl<T>::operator=(::std::move(RHS));
-    return *this;
-  }
-#endif
-};
-
 template<typename T, unsigned N>
 static inline size_t capacity_in_bytes(const SmallVector<T, N> &X) {
   return X.capacity_in_bytes();

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/SparseBitVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/SparseBitVector.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/SparseBitVector.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/SparseBitVector.h Tue Jan 15 11:16:16 2013
@@ -158,7 +158,7 @@
             && "Word Position outside of element");
 
     // Mask off previous bits.
-    Copy &= ~0L << BitPos;
+    Copy &= ~0UL << BitPos;
 
     if (Copy != 0) {
       if (sizeof(BitWord) == 4)
@@ -262,6 +262,22 @@
   }
 };
 
+template <unsigned ElementSize>
+struct ilist_traits<SparseBitVectorElement<ElementSize> >
+  : public ilist_default_traits<SparseBitVectorElement<ElementSize> > {
+  typedef SparseBitVectorElement<ElementSize> Element;
+
+  Element *createSentinel() const { return static_cast<Element *>(&Sentinel); }
+  static void destroySentinel(Element *) {}
+
+  Element *provideInitialHead() const { return createSentinel(); }
+  Element *ensureHead(Element *) const { return createSentinel(); }
+  static void noteHead(Element *, Element *) {}
+
+private:
+  mutable ilist_half_node<Element> Sentinel;
+};
+
 template <unsigned ElementSize = 128>
 class SparseBitVector {
   typedef ilist<SparseBitVectorElement<ElementSize> > ElementList;

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/SparseSet.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/SparseSet.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/SparseSet.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/SparseSet.h Tue Jan 15 11:16:16 2013
@@ -110,9 +110,9 @@
 /// For sets that may grow to thousands of elements, SparseT should be set to
 /// uint16_t or uint32_t.
 ///
-/// @param ValueT      The type of objects in the set.
-/// @param KeyFunctorT A functor that computes an unsigned index from KeyT.
-/// @param SparseT     An unsigned integer type. See above.
+/// @tparam ValueT      The type of objects in the set.
+/// @tparam KeyFunctorT A functor that computes an unsigned index from KeyT.
+/// @tparam SparseT     An unsigned integer type. See above.
 ///
 template<typename ValueT,
          typename KeyFunctorT = llvm::identity<unsigned>,
@@ -128,8 +128,8 @@
 
   // Disable copy construction and assignment.
   // This data structure is not meant to be used that way.
-  SparseSet(const SparseSet&); // DO NOT IMPLEMENT.
-  SparseSet &operator=(const SparseSet&); // DO NOT IMPLEMENT.
+  SparseSet(const SparseSet&) LLVM_DELETED_FUNCTION;
+  SparseSet &operator=(const SparseSet&) LLVM_DELETED_FUNCTION;
 
 public:
   typedef ValueT value_type;

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/StringExtras.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/StringExtras.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/StringExtras.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/StringExtras.h Tue Jan 15 11:16:16 2013
@@ -21,7 +21,7 @@
 template<typename T> class SmallVectorImpl;
 
 /// hexdigit - Return the hexadecimal character for the
-/// given number \arg X (which should be less than 16).
+/// given number \p X (which should be less than 16).
 static inline char hexdigit(unsigned X, bool LowerCase = false) {
   const char HexChar = LowerCase ? 'a' : 'A';
   return X < 10 ? '0' + X : HexChar + X - 10;
@@ -125,10 +125,29 @@
 //   X*33+c -> X*33^c
 static inline unsigned HashString(StringRef Str, unsigned Result = 0) {
   for (unsigned i = 0, e = Str.size(); i != e; ++i)
-    Result = Result * 33 + Str[i];
+    Result = Result * 33 + (unsigned char)Str[i];
   return Result;
 }
 
+/// Returns the English suffix for an ordinal integer (-st, -nd, -rd, -th).
+static inline StringRef getOrdinalSuffix(unsigned Val) {
+  // It is critically important that we do this perfectly for
+  // user-written sequences with over 100 elements.
+  switch (Val % 100) {
+  case 11:
+  case 12:
+  case 13:
+    return "th";
+  default:
+    switch (Val % 10) {
+      case 1: return "st";
+      case 2: return "nd";
+      case 3: return "rd";
+      default: return "th";
+    }
+  }
+}
+
 } // End llvm namespace
 
 #endif

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/StringRef.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/StringRef.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/StringRef.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/StringRef.h Tue Jan 15 11:16:16 2013
@@ -138,7 +138,7 @@
     }
 
     /// compare - Compare two strings; the result is -1, 0, or 1 if this string
-    /// is lexicographically less than, equal to, or greater than the \arg RHS.
+    /// is lexicographically less than, equal to, or greater than the \p RHS.
     int compare(StringRef RHS) const {
       // Check the prefix for a mismatch.
       if (int Res = compareMemory(Data, RHS.Data, min(Length, RHS.Length)))
@@ -205,13 +205,13 @@
     /// @name String Predicates
     /// @{
 
-    /// startswith - Check if this string starts with the given \arg Prefix.
+    /// Check if this string starts with the given \p Prefix.
     bool startswith(StringRef Prefix) const {
       return Length >= Prefix.Length &&
              compareMemory(Data, Prefix.Data, Prefix.Length) == 0;
     }
 
-    /// endswith - Check if this string ends with the given \arg Suffix.
+    /// Check if this string ends with the given \p Suffix.
     bool endswith(StringRef Suffix) const {
       return Length >= Suffix.Length &&
         compareMemory(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0;
@@ -221,9 +221,9 @@
     /// @name String Searching
     /// @{
 
-    /// find - Search for the first character \arg C in the string.
+    /// Search for the first character \p C in the string.
     ///
-    /// \return - The index of the first occurrence of \arg C, or npos if not
+    /// \returns The index of the first occurrence of \p C, or npos if not
     /// found.
     size_t find(char C, size_t From = 0) const {
       for (size_t i = min(From, Length), e = Length; i != e; ++i)
@@ -232,15 +232,15 @@
       return npos;
     }
 
-    /// find - Search for the first string \arg Str in the string.
+    /// Search for the first string \p Str in the string.
     ///
-    /// \return - The index of the first occurrence of \arg Str, or npos if not
+    /// \returns The index of the first occurrence of \p Str, or npos if not
     /// found.
     size_t find(StringRef Str, size_t From = 0) const;
 
-    /// rfind - Search for the last character \arg C in the string.
+    /// Search for the last character \p C in the string.
     ///
-    /// \return - The index of the last occurrence of \arg C, or npos if not
+    /// \returns The index of the last occurrence of \p C, or npos if not
     /// found.
     size_t rfind(char C, size_t From = npos) const {
       From = min(From, Length);
@@ -253,61 +253,61 @@
       return npos;
     }
 
-    /// rfind - Search for the last string \arg Str in the string.
+    /// Search for the last string \p Str in the string.
     ///
-    /// \return - The index of the last occurrence of \arg Str, or npos if not
+    /// \returns The index of the last occurrence of \p Str, or npos if not
     /// found.
     size_t rfind(StringRef Str) const;
 
-    /// find_first_of - Find the first character in the string that is \arg C,
-    /// or npos if not found. Same as find.
+    /// Find the first character in the string that is \p C, or npos if not
+    /// found. Same as find.
     size_type find_first_of(char C, size_t From = 0) const {
       return find(C, From);
     }
 
-    /// find_first_of - Find the first character in the string that is in \arg
-    /// Chars, or npos if not found.
+    /// Find the first character in the string that is in \p Chars, or npos if
+    /// not found.
     ///
-    /// Note: O(size() + Chars.size())
+    /// Complexity: O(size() + Chars.size())
     size_type find_first_of(StringRef Chars, size_t From = 0) const;
 
-    /// find_first_not_of - Find the first character in the string that is not
-    /// \arg C or npos if not found.
+    /// Find the first character in the string that is not \p C or npos if not
+    /// found.
     size_type find_first_not_of(char C, size_t From = 0) const;
 
-    /// find_first_not_of - Find the first character in the string that is not
-    /// in the string \arg Chars, or npos if not found.
+    /// Find the first character in the string that is not in the string
+    /// \p Chars, or npos if not found.
     ///
-    /// Note: O(size() + Chars.size())
+    /// Complexity: O(size() + Chars.size())
     size_type find_first_not_of(StringRef Chars, size_t From = 0) const;
 
-    /// find_last_of - Find the last character in the string that is \arg C, or
-    /// npos if not found.
+    /// Find the last character in the string that is \p C, or npos if not
+    /// found.
     size_type find_last_of(char C, size_t From = npos) const {
       return rfind(C, From);
     }
 
-    /// find_last_of - Find the last character in the string that is in \arg C,
-    /// or npos if not found.
+    /// Find the last character in the string that is in \p C, or npos if not
+    /// found.
     ///
-    /// Note: O(size() + Chars.size())
+    /// Complexity: O(size() + Chars.size())
     size_type find_last_of(StringRef Chars, size_t From = npos) const;
 
-    /// find_last_not_of - Find the last character in the string that is not
-    /// \arg C, or npos if not found.
+    /// Find the last character in the string that is not \p C, or npos if not
+    /// found.
     size_type find_last_not_of(char C, size_t From = npos) const;
 
-    /// find_last_not_of - Find the last character in the string that is not in
-    /// \arg Chars, or npos if not found.
+    /// Find the last character in the string that is not in \p Chars, or
+    /// npos if not found.
     ///
-    /// Note: O(size() + Chars.size())
+    /// Complexity: O(size() + Chars.size())
     size_type find_last_not_of(StringRef Chars, size_t From = npos) const;
 
     /// @}
     /// @name Helpful Algorithms
     /// @{
 
-    /// count - Return the number of occurrences of \arg C in the string.
+    /// Return the number of occurrences of \p C in the string.
     size_t count(char C) const {
       size_t Count = 0;
       for (size_t i = 0, e = Length; i != e; ++i)
@@ -316,18 +316,17 @@
       return Count;
     }
 
-    /// count - Return the number of non-overlapped occurrences of \arg Str in
+    /// Return the number of non-overlapped occurrences of \p Str in
     /// the string.
     size_t count(StringRef Str) const;
 
-    /// getAsInteger - Parse the current string as an integer of the specified
-    /// radix.  If Radix is specified as zero, this does radix autosensing using
+    /// Parse the current string as an integer of the specified radix.  If
+    /// \p Radix is specified as zero, this does radix autosensing using
     /// extended C rules: 0 is octal, 0x is hex, 0b is binary.
     ///
     /// If the string is invalid or if only a subset of the string is valid,
     /// this returns true to signify the error.  The string is considered
     /// erroneous if empty or if it overflows T.
-    ///
     template <typename T>
     typename enable_if_c<std::numeric_limits<T>::is_signed, bool>::type
     getAsInteger(unsigned Radix, T &Result) const {
@@ -350,13 +349,12 @@
       return false;
     }
 
-    /// getAsInteger - Parse the current string as an integer of the
-    /// specified radix, or of an autosensed radix if the radix given
-    /// is 0.  The current value in Result is discarded, and the
-    /// storage is changed to be wide enough to store the parsed
-    /// integer.
+    /// Parse the current string as an integer of the specified \p Radix, or of
+    /// an autosensed radix if the \p Radix given is 0.  The current value in
+    /// \p Result is discarded, and the storage is changed to be wide enough to
+    /// store the parsed integer.
     ///
-    /// Returns true if the string does not solely consist of a valid
+    /// \returns true if the string does not solely consist of a valid
     /// non-empty number in the appropriate base.
     ///
     /// APInt::fromString is superficially similar but assumes the
@@ -367,70 +365,70 @@
     /// @name String Operations
     /// @{
 
-    // lower - Convert the given ASCII string to lowercase.
+    // Convert the given ASCII string to lowercase.
     std::string lower() const;
 
-    /// upper - Convert the given ASCII string to uppercase.
+    /// Convert the given ASCII string to uppercase.
     std::string upper() const;
 
     /// @}
     /// @name Substring Operations
     /// @{
 
-    /// substr - Return a reference to the substring from [Start, Start + N).
+    /// Return a reference to the substring from [Start, Start + N).
     ///
-    /// \param Start - The index of the starting character in the substring; if
+    /// \param Start The index of the starting character in the substring; if
     /// the index is npos or greater than the length of the string then the
     /// empty substring will be returned.
     ///
-    /// \param N - The number of characters to included in the substring. If N
+    /// \param N The number of characters to included in the substring. If N
     /// exceeds the number of characters remaining in the string, the string
-    /// suffix (starting with \arg Start) will be returned.
+    /// suffix (starting with \p Start) will be returned.
     StringRef substr(size_t Start, size_t N = npos) const {
       Start = min(Start, Length);
       return StringRef(Data + Start, min(N, Length - Start));
     }
     
-    /// drop_front - Return a StringRef equal to 'this' but with the first
-    /// elements dropped.
+    /// Return a StringRef equal to 'this' but with the first \p N elements
+    /// dropped.
     StringRef drop_front(unsigned N = 1) const {
       assert(size() >= N && "Dropping more elements than exist");
       return substr(N);
     }
 
-    /// drop_back - Return a StringRef equal to 'this' but with the last
-    /// elements dropped.
+    /// Return a StringRef equal to 'this' but with the last \p N elements
+    /// dropped.
     StringRef drop_back(unsigned N = 1) const {
       assert(size() >= N && "Dropping more elements than exist");
       return substr(0, size()-N);
     }
 
-    /// slice - Return a reference to the substring from [Start, End).
+    /// Return a reference to the substring from [Start, End).
     ///
-    /// \param Start - The index of the starting character in the substring; if
+    /// \param Start The index of the starting character in the substring; if
     /// the index is npos or greater than the length of the string then the
     /// empty substring will be returned.
     ///
-    /// \param End - The index following the last character to include in the
-    /// substring. If this is npos, or less than \arg Start, or exceeds the
+    /// \param End The index following the last character to include in the
+    /// substring. If this is npos, or less than \p Start, or exceeds the
     /// number of characters remaining in the string, the string suffix
-    /// (starting with \arg Start) will be returned.
+    /// (starting with \p Start) will be returned.
     StringRef slice(size_t Start, size_t End) const {
       Start = min(Start, Length);
       End = min(max(Start, End), Length);
       return StringRef(Data + Start, End - Start);
     }
 
-    /// split - Split into two substrings around the first occurrence of a
-    /// separator character.
+    /// Split into two substrings around the first occurrence of a separator
+    /// character.
     ///
-    /// If \arg Separator is in the string, then the result is a pair (LHS, RHS)
+    /// If \p Separator is in the string, then the result is a pair (LHS, RHS)
     /// such that (*this == LHS + Separator + RHS) is true and RHS is
-    /// maximal. If \arg Separator is not in the string, then the result is a
+    /// maximal. If \p Separator is not in the string, then the result is a
     /// pair (LHS, RHS) where (*this == LHS) and (RHS == "").
     ///
-    /// \param Separator - The character to split on.
-    /// \return - The split substrings.
+    /// \param Separator The character to split on.
+    /// \returns The split substrings.
     std::pair<StringRef, StringRef> split(char Separator) const {
       size_t Idx = find(Separator);
       if (Idx == npos)
@@ -438,12 +436,12 @@
       return std::make_pair(slice(0, Idx), slice(Idx+1, npos));
     }
 
-    /// split - Split into two substrings around the first occurrence of a
-    /// separator string.
+    /// Split into two substrings around the first occurrence of a separator
+    /// string.
     ///
-    /// If \arg Separator is in the string, then the result is a pair (LHS, RHS)
+    /// If \p Separator is in the string, then the result is a pair (LHS, RHS)
     /// such that (*this == LHS + Separator + RHS) is true and RHS is
-    /// maximal. If \arg Separator is not in the string, then the result is a
+    /// maximal. If \p Separator is not in the string, then the result is a
     /// pair (LHS, RHS) where (*this == LHS) and (RHS == "").
     ///
     /// \param Separator - The string to split on.
@@ -455,14 +453,13 @@
       return std::make_pair(slice(0, Idx), slice(Idx + Separator.size(), npos));
     }
 
-    /// split - Split into substrings around the occurrences of a separator
-    /// string.
+    /// Split into substrings around the occurrences of a separator string.
     ///
-    /// Each substring is stored in \arg A. If \arg MaxSplit is >= 0, at most
-    /// \arg MaxSplit splits are done and consequently <= \arg MaxSplit
+    /// Each substring is stored in \p A. If \p MaxSplit is >= 0, at most
+    /// \p MaxSplit splits are done and consequently <= \p MaxSplit
     /// elements are added to A.
-    /// If \arg KeepEmpty is false, empty strings are not added to \arg A. They
-    /// still count when considering \arg MaxSplit
+    /// If \p KeepEmpty is false, empty strings are not added to \p A. They
+    /// still count when considering \p MaxSplit
     /// An useful invariant is that
     /// Separator.join(A) == *this if MaxSplit == -1 and KeepEmpty == true
     ///
@@ -474,12 +471,12 @@
                StringRef Separator, int MaxSplit = -1,
                bool KeepEmpty = true) const;
 
-    /// rsplit - Split into two substrings around the last occurrence of a
-    /// separator character.
+    /// Split into two substrings around the last occurrence of a separator
+    /// character.
     ///
-    /// If \arg Separator is in the string, then the result is a pair (LHS, RHS)
+    /// If \p Separator is in the string, then the result is a pair (LHS, RHS)
     /// such that (*this == LHS + Separator + RHS) is true and RHS is
-    /// minimal. If \arg Separator is not in the string, then the result is a
+    /// minimal. If \p Separator is not in the string, then the result is a
     /// pair (LHS, RHS) where (*this == LHS) and (RHS == "").
     ///
     /// \param Separator - The character to split on.
@@ -491,20 +488,20 @@
       return std::make_pair(slice(0, Idx), slice(Idx+1, npos));
     }
 
-    /// ltrim - Return string with consecutive characters in \arg Chars starting
-    /// from the left removed.
+    /// Return string with consecutive characters in \p Chars starting from
+    /// the left removed.
     StringRef ltrim(StringRef Chars = " \t\n\v\f\r") const {
       return drop_front(std::min(Length, find_first_not_of(Chars)));
     }
 
-    /// rtrim - Return string with consecutive characters in \arg Chars starting
-    /// from the right removed.
+    /// Return string with consecutive characters in \p Chars starting from
+    /// the right removed.
     StringRef rtrim(StringRef Chars = " \t\n\v\f\r") const {
       return drop_back(Length - std::min(Length, find_last_not_of(Chars) + 1));
     }
 
-    /// trim - Return string with consecutive characters in \arg Chars starting
-    /// from the left and right removed.
+    /// Return string with consecutive characters in \p Chars starting from
+    /// the left and right removed.
     StringRef trim(StringRef Chars = " \t\n\v\f\r") const {
       return ltrim(Chars).rtrim(Chars);
     }

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/StringSet.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/StringSet.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/StringSet.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/StringSet.h Tue Jan 15 11:16:16 2013
@@ -29,8 +29,13 @@
       assert(!InLang.empty());
       const char *KeyStart = InLang.data();
       const char *KeyEnd = KeyStart + InLang.size();
-      return base::insert(llvm::StringMapEntry<char>::
-                          Create(KeyStart, KeyEnd, base::getAllocator(), '+'));
+      llvm::StringMapEntry<char> *Entry = llvm::StringMapEntry<char>::
+                            Create(KeyStart, KeyEnd, base::getAllocator(), '+');
+      if (!base::insert(Entry)) {
+        Entry->Destroy(base::getAllocator());
+        return false;
+      }
+      return true;
     }
   };
 }

Removed: llvm/branches/AMDILBackend/include/llvm/ADT/Trie.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/Trie.h?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/Trie.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/Trie.h (removed)
@@ -1,334 +0,0 @@
-//===- llvm/ADT/Trie.h ---- Generic trie structure --------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This class defines a generic trie structure. The trie structure
-// is immutable after creation, but the payload contained within it is not.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ADT_TRIE_H
-#define LLVM_ADT_TRIE_H
-
-#include "llvm/ADT/GraphTraits.h"
-#include "llvm/Support/DOTGraphTraits.h"
-
-#include <cassert>
-#include <vector>
-
-namespace llvm {
-
-// FIXME:
-// - Labels are usually small, maybe it's better to use SmallString
-// - Should we use char* during construction?
-// - Should we templatize Empty with traits-like interface?
-
-template<class Payload>
-class Trie {
-  friend class GraphTraits<Trie<Payload> >;
-  friend class DOTGraphTraits<Trie<Payload> >;
-public:
-  class Node {
-    friend class Trie;
-
-  public:
-    typedef std::vector<Node*> NodeVectorType;
-    typedef typename NodeVectorType::iterator iterator;
-    typedef typename NodeVectorType::const_iterator const_iterator;
-
-  private:
-    enum QueryResult {
-      Same           = -3,
-      StringIsPrefix = -2,
-      LabelIsPrefix  = -1,
-      DontMatch      = 0,
-      HaveCommonPart
-    };
-
-    struct NodeCmp {
-      bool operator() (Node* N1, Node* N2) {
-        return (N1->Label[0] < N2->Label[0]);
-      }
-      bool operator() (Node* N, char Id) {
-        return (N->Label[0] < Id);
-      }
-    };
-
-    std::string Label;
-    Payload Data;
-    NodeVectorType Children;
-
-    // Do not implement
-    Node(const Node&);
-    Node& operator=(const Node&);
-
-    inline void addEdge(Node* N) {
-      if (Children.empty())
-        Children.push_back(N);
-      else {
-        iterator I = std::lower_bound(Children.begin(), Children.end(),
-                                      N, NodeCmp());
-        // FIXME: no dups are allowed
-        Children.insert(I, N);
-      }
-    }
-
-    inline void setEdge(Node* N) {
-      char Id = N->Label[0];
-      iterator I = std::lower_bound(Children.begin(), Children.end(),
-                                     Id, NodeCmp());
-      assert(I != Children.end() && "Node does not exists!");
-      *I = N;
-    }
-
-    QueryResult query(const std::string& s) const {
-      unsigned i, l;
-      unsigned l1 = s.length();
-      unsigned l2 = Label.length();
-
-      // Find the length of common part
-      l = std::min(l1, l2);
-      i = 0;
-      while ((i < l) && (s[i] == Label[i]))
-        ++i;
-
-      if (i == l) { // One is prefix of another, find who is who
-        if (l1 == l2)
-          return Same;
-        else if (i == l1)
-          return StringIsPrefix;
-        else
-          return LabelIsPrefix;
-      } else // s and Label have common (possible empty) part, return its length
-        return (QueryResult)i;
-    }
-
-  public:
-    inline explicit Node(const Payload& data, const std::string& label = ""):
-        Label(label), Data(data) { }
-
-    inline const Payload& data() const { return Data; }
-    inline void setData(const Payload& data) { Data = data; }
-
-    inline const std::string& label() const { return Label; }
-
-#if 0
-    inline void dump() {
-      llvm::cerr << "Node: " << this << "\n"
-                << "Label: " << Label << "\n"
-                << "Children:\n";
-
-      for (iterator I = Children.begin(), E = Children.end(); I != E; ++I)
-        llvm::cerr << (*I)->Label << "\n";
-    }
-#endif
-
-    inline Node* getEdge(char Id) {
-      Node* fNode = NULL;
-      iterator I = std::lower_bound(Children.begin(), Children.end(),
-                                          Id, NodeCmp());
-      if (I != Children.end() && (*I)->Label[0] == Id)
-        fNode = *I;
-
-      return fNode;
-    }
-
-    inline iterator       begin()       { return Children.begin(); }
-    inline const_iterator begin() const { return Children.begin(); }
-    inline iterator       end  ()       { return Children.end();   }
-    inline const_iterator end  () const { return Children.end();   }
-
-    inline size_t         size () const { return Children.size();  }
-    inline bool           empty() const { return Children.empty(); }
-    inline const Node*   &front() const { return Children.front(); }
-    inline       Node*   &front()       { return Children.front(); }
-    inline const Node*   &back()  const { return Children.back();  }
-    inline       Node*   &back()        { return Children.back();  }
-
-  };
-
-private:
-  std::vector<Node*> Nodes;
-  Payload Empty;
-
-  inline Node* addNode(const Payload& data, const std::string label = "") {
-    Node* N = new Node(data, label);
-    Nodes.push_back(N);
-    return N;
-  }
-
-  inline Node* splitEdge(Node* N, char Id, size_t index) {
-    Node* eNode = N->getEdge(Id);
-    assert(eNode && "Node doesn't exist");
-
-    const std::string &l = eNode->Label;
-    assert(index > 0 && index < l.length() && "Trying to split too far!");
-    std::string l1 = l.substr(0, index);
-    std::string l2 = l.substr(index);
-
-    Node* nNode = addNode(Empty, l1);
-    N->setEdge(nNode);
-
-    eNode->Label = l2;
-    nNode->addEdge(eNode);
-
-    return nNode;
-  }
-
-  // Do not implement
-  Trie(const Trie&);
-  Trie& operator=(const Trie&);
-
-public:
-  inline explicit Trie(const Payload& empty):Empty(empty) {
-    addNode(Empty);
-  }
-  inline ~Trie() {
-    for (unsigned i = 0, e = Nodes.size(); i != e; ++i)
-      delete Nodes[i];
-  }
-
-  inline Node* getRoot() const { return Nodes[0]; }
-
-  bool addString(const std::string& s, const Payload& data);
-  const Payload& lookup(const std::string& s) const;
-
-};
-
-// Define this out-of-line to dissuade the C++ compiler from inlining it.
-template<class Payload>
-bool Trie<Payload>::addString(const std::string& s, const Payload& data) {
-  Node* cNode = getRoot();
-  Node* tNode = NULL;
-  std::string s1(s);
-
-  while (tNode == NULL) {
-    char Id = s1[0];
-    if (Node* nNode = cNode->getEdge(Id)) {
-      typename Node::QueryResult r = nNode->query(s1);
-
-      switch (r) {
-      case Node::Same:
-      case Node::StringIsPrefix:
-        // Currently we don't allow to have two strings in the trie one
-        // being a prefix of another. This should be fixed.
-        assert(0 && "FIXME!");
-        return false;
-      case Node::DontMatch:
-        llvm_unreachable("Impossible!");
-      case Node::LabelIsPrefix:
-        s1 = s1.substr(nNode->label().length());
-        cNode = nNode;
-        break;
-      default:
-        nNode = splitEdge(cNode, Id, r);
-        tNode = addNode(data, s1.substr(r));
-        nNode->addEdge(tNode);
-      }
-    } else {
-      tNode = addNode(data, s1);
-      cNode->addEdge(tNode);
-    }
-  }
-
-  return true;
-}
-
-template<class Payload>
-const Payload& Trie<Payload>::lookup(const std::string& s) const {
-  Node* cNode = getRoot();
-  Node* tNode = NULL;
-  std::string s1(s);
-
-  while (tNode == NULL) {
-    char Id = s1[0];
-    if (Node* nNode = cNode->getEdge(Id)) {
-      typename Node::QueryResult r = nNode->query(s1);
-
-      switch (r) {
-      case Node::Same:
-        tNode = nNode;
-        break;
-      case Node::StringIsPrefix:
-        return Empty;
-      case Node::DontMatch:
-        llvm_unreachable("Impossible!");
-      case Node::LabelIsPrefix:
-        s1 = s1.substr(nNode->label().length());
-        cNode = nNode;
-        break;
-      default:
-        return Empty;
-      }
-    } else
-      return Empty;
-  }
-
-  return tNode->data();
-}
-
-template<class Payload>
-struct GraphTraits<Trie<Payload> > {
-  typedef Trie<Payload> TrieType;
-  typedef typename TrieType::Node NodeType;
-  typedef typename NodeType::iterator ChildIteratorType;
-
-  static inline NodeType *getEntryNode(const TrieType& T) {
-    return T.getRoot();
-  }
-
-  static inline ChildIteratorType child_begin(NodeType *N) {
-    return N->begin();
-  }
-  static inline ChildIteratorType child_end(NodeType *N) { return N->end(); }
-
-  typedef typename std::vector<NodeType*>::const_iterator nodes_iterator;
-
-  static inline nodes_iterator nodes_begin(const TrieType& G) {
-    return G.Nodes.begin();
-  }
-  static inline nodes_iterator nodes_end(const TrieType& G) {
-    return G.Nodes.end();
-  }
-
-};
-
-template<class Payload>
-struct DOTGraphTraits<Trie<Payload> > : public DefaultDOTGraphTraits {
-  typedef typename Trie<Payload>::Node NodeType;
-  typedef typename GraphTraits<Trie<Payload> >::ChildIteratorType EdgeIter;
-
-  static std::string getGraphName(const Trie<Payload>& T) {
-    return "Trie";
-  }
-
-  static std::string getNodeLabel(NodeType* Node, const Trie<Payload>& T) {
-    if (T.getRoot() == Node)
-      return "<Root>";
-    else
-      return Node->label();
-  }
-
-  static std::string getEdgeSourceLabel(NodeType* Node, EdgeIter I) {
-    NodeType* N = *I;
-    return N->label().substr(0, 1);
-  }
-
-  static std::string getNodeAttributes(const NodeType* Node,
-                                       const Trie<Payload>& T) {
-    if (Node->data() != T.Empty)
-      return "color=blue";
-
-    return "";
-  }
-
-};
-
-} // end of llvm namespace
-
-#endif // LLVM_ADT_TRIE_H

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/Triple.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/Triple.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/Triple.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/Triple.h Tue Jan 15 11:16:16 2013
@@ -65,7 +65,9 @@
     nvptx,   // NVPTX: 32-bit
     nvptx64, // NVPTX: 64-bit
     le32,    // le32: generic little-endian 32-bit CPU (PNaCl / Emscripten)
-    amdil   // amdil: amd IL
+    amdil,   // amdil: amd IL
+    spir,    // SPIR: standard portable IR for OpenCL 32-bit version
+    spir64   // SPIR: standard portable IR for OpenCL 64-bit version
   };
   enum VendorType {
     UnknownVendor,
@@ -74,7 +76,9 @@
     PC,
     SCEI,
     BGP,
-    BGQ
+    BGQ,
+    Freescale,
+    IBM
   };
   enum OSType {
     UnknownOS,
@@ -99,7 +103,8 @@
     RTEMS,
     NativeClient,
     CNK,         // BG/P Compute-Node Kernel
-    Bitrig
+    Bitrig,
+    AIX
   };
   enum EnvironmentType {
     UnknownEnvironment,
@@ -109,7 +114,8 @@
     GNUEABIHF,
     EABI,
     MachO,
-    ANDROIDEABI
+    Android,
+    ELF
   };
 
 private:
@@ -341,7 +347,7 @@
   /// to a known type.
   void setEnvironment(EnvironmentType Kind);
 
-  /// setTriple - Set all components to the new triple \arg Str.
+  /// setTriple - Set all components to the new triple \p Str.
   void setTriple(const Twine &Str);
 
   /// setArchName - Set the architecture (first) component of the
@@ -392,11 +398,10 @@
   /// @name Static helpers for IDs.
   /// @{
 
-  /// getArchTypeName - Get the canonical name for the \arg Kind
-  /// architecture.
+  /// getArchTypeName - Get the canonical name for the \p Kind architecture.
   static const char *getArchTypeName(ArchType Kind);
 
-  /// getArchTypePrefix - Get the "prefix" canonical name for the \arg Kind
+  /// getArchTypePrefix - Get the "prefix" canonical name for the \p Kind
   /// architecture. This is the prefix used by the architecture specific
   /// builtins, and is suitable for passing to \see
   /// Intrinsic::getIntrinsicForGCCBuiltin().
@@ -404,15 +409,13 @@
   /// \return - The architecture prefix, or 0 if none is defined.
   static const char *getArchTypePrefix(ArchType Kind);
 
-  /// getVendorTypeName - Get the canonical name for the \arg Kind
-  /// vendor.
+  /// getVendorTypeName - Get the canonical name for the \p Kind vendor.
   static const char *getVendorTypeName(VendorType Kind);
 
-  /// getOSTypeName - Get the canonical name for the \arg Kind operating
-  /// system.
+  /// getOSTypeName - Get the canonical name for the \p Kind operating system.
   static const char *getOSTypeName(OSType Kind);
 
-  /// getEnvironmentTypeName - Get the canonical name for the \arg Kind
+  /// getEnvironmentTypeName - Get the canonical name for the \p Kind
   /// environment.
   static const char *getEnvironmentTypeName(EnvironmentType Kind);
 
@@ -424,11 +427,6 @@
   /// architecture name (e.g., "x86").
   static ArchType getArchTypeForLLVMName(StringRef Str);
 
-  /// getArchTypeForDarwinArchName - Get the architecture type for a "Darwin"
-  /// architecture name, for example as accepted by "gcc -arch" (see also
-  /// arch(3)).
-  static ArchType getArchTypeForDarwinArchName(StringRef Str);
-
   /// @}
 };
 

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/Twine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/Twine.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/Twine.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/Twine.h Tue Jan 15 11:16:16 2013
@@ -44,7 +44,7 @@
   /// itself, and renders as an empty string. This can be returned from APIs to
   /// effectively nullify any concatenations performed on the result.
   ///
-  /// \b Implementation \n
+  /// \b Implementation
   ///
   /// Given the nature of a Twine, it is not possible for the Twine's
   /// concatenation method to construct interior nodes; the result must be
@@ -67,7 +67,7 @@
   ///
   /// These invariants are check by \see isValid().
   ///
-  /// \b Efficiency Considerations \n
+  /// \b Efficiency Considerations
   ///
   /// The Twine is designed to yield efficient and small code for common
   /// situations. For this reason, the concat() method is inlined so that
@@ -303,37 +303,37 @@
       LHS.character = static_cast<char>(Val);
     }
 
-    /// Construct a twine to print \arg Val as an unsigned decimal integer.
+    /// Construct a twine to print \p Val as an unsigned decimal integer.
     explicit Twine(unsigned Val)
       : LHSKind(DecUIKind), RHSKind(EmptyKind) {
       LHS.decUI = Val;
     }
 
-    /// Construct a twine to print \arg Val as a signed decimal integer.
+    /// Construct a twine to print \p Val as a signed decimal integer.
     explicit Twine(int Val)
       : LHSKind(DecIKind), RHSKind(EmptyKind) {
       LHS.decI = Val;
     }
 
-    /// Construct a twine to print \arg Val as an unsigned decimal integer.
+    /// Construct a twine to print \p Val as an unsigned decimal integer.
     explicit Twine(const unsigned long &Val)
       : LHSKind(DecULKind), RHSKind(EmptyKind) {
       LHS.decUL = &Val;
     }
 
-    /// Construct a twine to print \arg Val as a signed decimal integer.
+    /// Construct a twine to print \p Val as a signed decimal integer.
     explicit Twine(const long &Val)
       : LHSKind(DecLKind), RHSKind(EmptyKind) {
       LHS.decL = &Val;
     }
 
-    /// Construct a twine to print \arg Val as an unsigned decimal integer.
+    /// Construct a twine to print \p Val as an unsigned decimal integer.
     explicit Twine(const unsigned long long &Val)
       : LHSKind(DecULLKind), RHSKind(EmptyKind) {
       LHS.decULL = &Val;
     }
 
-    /// Construct a twine to print \arg Val as a signed decimal integer.
+    /// Construct a twine to print \p Val as a signed decimal integer.
     explicit Twine(const long long &Val)
       : LHSKind(DecLLKind), RHSKind(EmptyKind) {
       LHS.decLL = &Val;
@@ -370,7 +370,7 @@
     /// @name Numeric Conversions
     /// @{
 
-    // Construct a twine to print \arg Val as an unsigned hexadecimal integer.
+    // Construct a twine to print \p Val as an unsigned hexadecimal integer.
     static Twine utohexstr(const uint64_t &Val) {
       Child LHS, RHS;
       LHS.uHex = &Val;
@@ -447,17 +447,17 @@
     /// The returned StringRef's size does not include the null terminator.
     StringRef toNullTerminatedStringRef(SmallVectorImpl<char> &Out) const;
 
-    /// print - Write the concatenated string represented by this twine to the
-    /// stream \arg OS.
+    /// Write the concatenated string represented by this twine to the
+    /// stream \p OS.
     void print(raw_ostream &OS) const;
 
-    /// dump - Dump the concatenated string represented by this twine to stderr.
+    /// Dump the concatenated string represented by this twine to stderr.
     void dump() const;
 
-    /// print - Write the representation of this twine to the stream \arg OS.
+    /// Write the representation of this twine to the stream \p OS.
     void printRepr(raw_ostream &OS) const;
 
-    /// dumpRepr - Dump the representation of this twine to stderr.
+    /// Dump the representation of this twine to stderr.
     void dumpRepr() const;
 
     /// @}

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/ValueMap.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/ValueMap.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/ValueMap.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/ValueMap.h Tue Jan 15 11:16:16 2013
@@ -80,8 +80,8 @@
   typedef typename Config::ExtraData ExtraData;
   MapT Map;
   ExtraData Data;
-  ValueMap(const ValueMap&); // DO NOT IMPLEMENT
-  ValueMap& operator=(const ValueMap&); // DO NOT IMPLEMENT
+  ValueMap(const ValueMap&) LLVM_DELETED_FUNCTION;
+  ValueMap& operator=(const ValueMap&) LLVM_DELETED_FUNCTION;
 public:
   typedef KeyT key_type;
   typedef ValueT mapped_type;

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/VariadicFunction.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/VariadicFunction.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/VariadicFunction.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/VariadicFunction.h Tue Jan 15 11:16:16 2013
@@ -206,7 +206,7 @@
   ResultT operator()(Param0T P0, Param1T P1, \
                      LLVM_COMMA_JOIN ## N(const ArgT &A)) const { \
     const ArgT *const Args[] = { LLVM_COMMA_JOIN ## N(&A) }; \
-    return Func(P0, P1, makeAraryRef(Args)); \
+    return Func(P0, P1, makeArrayRef(Args)); \
   }
   LLVM_DEFINE_OVERLOAD(1)
   LLVM_DEFINE_OVERLOAD(2)

Modified: llvm/branches/AMDILBackend/include/llvm/ADT/ilist.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ADT/ilist.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ADT/ilist.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ADT/ilist.h Tue Jan 15 11:16:16 2013
@@ -38,6 +38,7 @@
 #ifndef LLVM_ADT_ILIST_H
 #define LLVM_ADT_ILIST_H
 
+#include "llvm/Support/Compiler.h"
 #include <algorithm>
 #include <cassert>
 #include <cstddef>
@@ -331,8 +332,8 @@
 
   // No fundamental reason why iplist can't be copyable, but the default
   // copy/copy-assign won't do.
-  iplist(const iplist &);         // do not implement
-  void operator=(const iplist &); // do not implement
+  iplist(const iplist &) LLVM_DELETED_FUNCTION;
+  void operator=(const iplist &) LLVM_DELETED_FUNCTION;
 
 public:
   typedef NodeTy *pointer;

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/AliasAnalysis.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/AliasAnalysis.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/AliasAnalysis.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/AliasAnalysis.h Tue Jan 15 11:16:16 2013
@@ -45,7 +45,8 @@
 class LoadInst;
 class StoreInst;
 class VAArgInst;
-class TargetData;
+class DataLayout;
+class TargetLibraryInfo;
 class Pass;
 class AnalysisUsage;
 class MemTransferInst;
@@ -54,7 +55,8 @@
 
 class AliasAnalysis {
 protected:
-  const TargetData *TD;
+  const DataLayout *TD;
+  const TargetLibraryInfo *TLI;
 
 private:
   AliasAnalysis *AA;       // Previous Alias Analysis to chain to.
@@ -73,7 +75,7 @@
 
 public:
   static char ID; // Class identification, replacement for typeinfo
-  AliasAnalysis() : TD(0), AA(0) {}
+  AliasAnalysis() : TD(0), TLI(0), AA(0) {}
   virtual ~AliasAnalysis();  // We want to be subclassed
 
   /// UnknownSize - This is a special value which can be used with the
@@ -81,12 +83,17 @@
   /// know the sizes of the potential memory references.
   static uint64_t const UnknownSize = ~UINT64_C(0);
 
-  /// getTargetData - Return a pointer to the current TargetData object, or
-  /// null if no TargetData object is available.
+  /// getDataLayout - Return a pointer to the current DataLayout object, or
+  /// null if no DataLayout object is available.
   ///
-  const TargetData *getTargetData() const { return TD; }
+  const DataLayout *getDataLayout() const { return TD; }
 
-  /// getTypeStoreSize - Return the TargetData store size for the given type,
+  /// getTargetLibraryInfo - Return a pointer to the current TargetLibraryInfo
+  /// object, or null if no TargetLibraryInfo object is available.
+  ///
+  const TargetLibraryInfo *getTargetLibraryInfo() const { return TLI; }
+
+  /// getTypeStoreSize - Return the DataLayout store size for the given type,
   /// if known, or a conservative value otherwise.
   ///
   uint64_t getTypeStoreSize(Type *Ty);
@@ -187,6 +194,11 @@
     return isNoAlias(Location(V1, V1Size), Location(V2, V2Size));
   }
   
+  /// isNoAlias - A convenience wrapper.
+  bool isNoAlias(const Value *V1, const Value *V2) {
+    return isNoAlias(Location(V1), Location(V2));
+  }
+  
   /// isMustAlias - A convenience wrapper.
   bool isMustAlias(const Location &LocA, const Location &LocB) {
     return alias(LocA, LocB) == MustAlias;

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/AliasSetTracker.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/AliasSetTracker.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/AliasSetTracker.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/AliasSetTracker.h Tue Jan 15 11:16:16 2013
@@ -109,7 +109,6 @@
 
   PointerRec *PtrList, **PtrListEnd;  // Doubly linked list of nodes.
   AliasSet *Forward;             // Forwarding pointer.
-  AliasSet *Next, *Prev;         // Doubly linked list of AliasSets.
 
   // All instructions without a specific address in this alias set.
   std::vector<AssertingVH<Instruction> > UnknownInsts;
@@ -226,8 +225,8 @@
                AccessTy(NoModRef), AliasTy(MustAlias), Volatile(false) {
   }
 
-  AliasSet(const AliasSet &AS);        // do not implement
-  void operator=(const AliasSet &AS);  // do not implement
+  AliasSet(const AliasSet &AS) LLVM_DELETED_FUNCTION;
+  void operator=(const AliasSet &AS) LLVM_DELETED_FUNCTION;
 
   PointerRec *getSomePointer() const {
     return PtrList;

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/BranchProbabilityInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/BranchProbabilityInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/BranchProbabilityInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/BranchProbabilityInfo.h Tue Jan 15 11:16:16 2013
@@ -28,11 +28,14 @@
 ///
 /// This is a function analysis pass which provides information on the relative
 /// probabilities of each "edge" in the function's CFG where such an edge is
-/// defined by a pair of basic blocks. The probability for a given block and
-/// a successor block are always relative to the probabilities of the other
-/// successor blocks. Another way of looking at it is that the probabilities
-/// for a given block B and each of its successors should sum to exactly
-/// one (100%).
+/// defined by a pair (PredBlock and an index in the successors). The
+/// probability of an edge from one block is always relative to the
+/// probabilities of other edges from the block. The probabilites of all edges
+/// from a block sum to exactly one (100%).
+/// We use a pair (PredBlock and an index in the successors) to uniquely
+/// identify an edge, since we can have multiple edges from Src to Dst.
+/// As an example, we can have a switch which jumps to Dst with value 0 and
+/// value 10.
 class BranchProbabilityInfo : public FunctionPass {
 public:
   static char ID;
@@ -52,6 +55,12 @@
   /// leaving the 'Src' block. The returned probability is never zero, and can
   /// only be one if the source block has only one successor.
   BranchProbability getEdgeProbability(const BasicBlock *Src,
+                                       unsigned IndexInSuccessors) const;
+
+  /// \brief Get the probability of going from Src to Dst.
+  ///
+  /// It returns the sum of all probabilities for edges from Src to Dst.
+  BranchProbability getEdgeProbability(const BasicBlock *Src,
                                        const BasicBlock *Dst) const;
 
   /// \brief Test if an edge is hot relative to other out-edges of the Src.
@@ -74,25 +83,34 @@
   raw_ostream &printEdgeProbability(raw_ostream &OS, const BasicBlock *Src,
                                     const BasicBlock *Dst) const;
 
-  /// \brief Get the raw edge weight calculated for the block pair.
+  /// \brief Get the raw edge weight calculated for the edge.
   ///
   /// This returns the raw edge weight. It is guaranteed to fall between 1 and
   /// UINT32_MAX. Note that the raw edge weight is not meaningful in isolation.
   /// This interface should be very carefully, and primarily by routines that
   /// are updating the analysis by later calling setEdgeWeight.
+  uint32_t getEdgeWeight(const BasicBlock *Src,
+                         unsigned IndexInSuccessors) const;
+
+  /// \brief Get the raw edge weight calculated for the block pair.
+  ///
+  /// This returns the sum of all raw edge weights from Src to Dst.
+  /// It is guaranteed to fall between 1 and UINT32_MAX.
   uint32_t getEdgeWeight(const BasicBlock *Src, const BasicBlock *Dst) const;
 
-  /// \brief Set the raw edge weight for the block pair.
+  /// \brief Set the raw edge weight for a given edge.
   ///
-  /// This allows a pass to explicitly set the edge weight for a block. It can
+  /// This allows a pass to explicitly set the edge weight for an edge. It can
   /// be used when updating the CFG to update and preserve the branch
   /// probability information. Read the implementation of how these edge
   /// weights are calculated carefully before using!
-  void setEdgeWeight(const BasicBlock *Src, const BasicBlock *Dst,
+  void setEdgeWeight(const BasicBlock *Src, unsigned IndexInSuccessors,
                      uint32_t Weight);
 
 private:
-  typedef std::pair<const BasicBlock *, const BasicBlock *> Edge;
+  // Since we allow duplicate edges from one basic block to another, we use
+  // a pair (PredBlock and an index in the successors) to specify an edge.
+  typedef std::pair<const BasicBlock *, unsigned> Edge;
 
   // Default weight value. Used when we don't have information about the edge.
   // TODO: DEFAULT_WEIGHT makes sense during static predication, when none of
@@ -122,6 +140,7 @@
   bool calcLoopBranchHeuristics(BasicBlock *BB);
   bool calcZeroHeuristics(BasicBlock *BB);
   bool calcFloatingPointHeuristics(BasicBlock *BB);
+  bool calcInvokeHeuristics(BasicBlock *BB);
 };
 
 }

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/CallGraph.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/CallGraph.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/CallGraph.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/CallGraph.h Tue Jan 15 11:16:16 2013
@@ -185,9 +185,9 @@
   /// in the CalledFunctions array of this or other CallGraphNodes.
   unsigned NumReferences;
 
-  CallGraphNode(const CallGraphNode &);            // DO NOT IMPLEMENT
-  void operator=(const CallGraphNode &);           // DO NOT IMPLEMENT
-  
+  CallGraphNode(const CallGraphNode &) LLVM_DELETED_FUNCTION;
+  void operator=(const CallGraphNode &) LLVM_DELETED_FUNCTION;
+ 
   void DropRef() { --NumReferences; }
   void AddRef() { ++NumReferences; }
 public:

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/CaptureTracking.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/CaptureTracking.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/CaptureTracking.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/CaptureTracking.h Tue Jan 15 11:16:16 2013
@@ -46,7 +46,7 @@
     /// capture) return false. To search it, return true.
     ///
     /// U->getUser() is always an Instruction.
-    virtual bool shouldExplore(Use *U) = 0;
+    virtual bool shouldExplore(Use *U);
 
     /// captured - Information about the pointer was captured by the user of
     /// use U. Return true to stop the traversal or false to continue looking

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/CodeMetrics.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/CodeMetrics.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/CodeMetrics.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/CodeMetrics.h Tue Jan 15 11:16:16 2013
@@ -22,11 +22,11 @@
   class BasicBlock;
   class Function;
   class Instruction;
-  class TargetData;
+  class DataLayout;
   class Value;
 
   /// \brief Check whether an instruction is likely to be "free" when lowered.
-  bool isInstructionFree(const Instruction *I, const TargetData *TD = 0);
+  bool isInstructionFree(const Instruction *I, const DataLayout *TD = 0);
 
   /// \brief Check whether a call will lower to something small.
   ///
@@ -85,10 +85,10 @@
                     NumRets(0) {}
 
     /// \brief Add information about a block to the current state.
-    void analyzeBasicBlock(const BasicBlock *BB, const TargetData *TD = 0);
+    void analyzeBasicBlock(const BasicBlock *BB, const DataLayout *TD = 0);
 
     /// \brief Add information about a function to the current state.
-    void analyzeFunction(Function *F, const TargetData *TD = 0);
+    void analyzeFunction(Function *F, const DataLayout *TD = 0);
   };
 }
 

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/ConstantFolding.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/ConstantFolding.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/ConstantFolding.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/ConstantFolding.h Tue Jan 15 11:16:16 2013
@@ -12,7 +12,7 @@
 //
 // Also, to supplement the basic VMCore ConstantExpr simplifications,
 // this file declares some additional folding routines that can make use of
-// TargetData information. These functions cannot go in VMCore due to library
+// DataLayout information. These functions cannot go in VMCore due to library
 // dependency issues.
 //
 //===----------------------------------------------------------------------===//
@@ -24,7 +24,7 @@
   class Constant;
   class ConstantExpr;
   class Instruction;
-  class TargetData;
+  class DataLayout;
   class TargetLibraryInfo;
   class Function;
   class Type;
@@ -36,14 +36,14 @@
 /// Note that this fails if not all of the operands are constant.  Otherwise,
 /// this function can only fail when attempting to fold instructions like loads
 /// and stores, which have no constant expression form.
-Constant *ConstantFoldInstruction(Instruction *I, const TargetData *TD = 0,
+Constant *ConstantFoldInstruction(Instruction *I, const DataLayout *TD = 0,
                                   const TargetLibraryInfo *TLI = 0);
 
 /// ConstantFoldConstantExpression - Attempt to fold the constant expression
-/// using the specified TargetData.  If successful, the constant result is
+/// using the specified DataLayout.  If successful, the constant result is
 /// result is returned, if not, null is returned.
 Constant *ConstantFoldConstantExpression(const ConstantExpr *CE,
-                                         const TargetData *TD = 0,
+                                         const DataLayout *TD = 0,
                                          const TargetLibraryInfo *TLI = 0);
 
 /// ConstantFoldInstOperands - Attempt to constant fold an instruction with the
@@ -54,7 +54,7 @@
 ///
 Constant *ConstantFoldInstOperands(unsigned Opcode, Type *DestTy,
                                    ArrayRef<Constant *> Ops,
-                                   const TargetData *TD = 0,
+                                   const DataLayout *TD = 0,
                                    const TargetLibraryInfo *TLI = 0);
 
 /// ConstantFoldCompareInstOperands - Attempt to constant fold a compare
@@ -63,7 +63,7 @@
 ///
 Constant *ConstantFoldCompareInstOperands(unsigned Predicate,
                                           Constant *LHS, Constant *RHS,
-                                          const TargetData *TD = 0,
+                                          const DataLayout *TD = 0,
                                           const TargetLibraryInfo *TLI = 0);
 
 /// ConstantFoldInsertValueInstruction - Attempt to constant fold an insertvalue
@@ -75,7 +75,7 @@
 /// ConstantFoldLoadFromConstPtr - Return the value that a load from C would
 /// produce if it is constant and determinable.  If this is not determinable,
 /// return null.
-Constant *ConstantFoldLoadFromConstPtr(Constant *C, const TargetData *TD = 0);
+Constant *ConstantFoldLoadFromConstPtr(Constant *C, const DataLayout *TD = 0);
 
 /// ConstantFoldLoadThroughGEPConstantExpr - Given a constant and a
 /// getelementptr constantexpr, return the constant value being addressed by the

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/Dominators.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/Dominators.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/Dominators.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/Dominators.h Tue Jan 15 11:16:16 2013
@@ -346,7 +346,7 @@
   DomTreeNodeBase<NodeT> *getRootNode() { return RootNode; }
   const DomTreeNodeBase<NodeT> *getRootNode() const { return RootNode; }
 
-  /// properlyDominates - Returns true iff this dominates N and this != N.
+  /// properlyDominates - Returns true iff A dominates B and A != B.
   /// Note that this is not a constant time operation!
   ///
   bool properlyDominates(const DomTreeNodeBase<NodeT> *A,
@@ -705,7 +705,20 @@
 
 EXTERN_TEMPLATE_INSTANTIATION(class DominatorTreeBase<BasicBlock>);
 
-class BasicBlockEdge;
+class BasicBlockEdge {
+  const BasicBlock *Start;
+  const BasicBlock *End;
+public:
+  BasicBlockEdge(const BasicBlock *Start_, const BasicBlock *End_) :
+    Start(Start_), End(End_) { }
+  const BasicBlock *getStart() const {
+    return Start;
+  }
+  const BasicBlock *getEnd() const {
+    return End;
+  }
+  bool isSingleEdge() const;
+};
 
 //===-------------------------------------
 /// DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/IVUsers.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/IVUsers.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/IVUsers.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/IVUsers.h Tue Jan 15 11:16:16 2013
@@ -28,7 +28,7 @@
 class ScalarEvolution;
 class SCEV;
 class IVUsers;
-class TargetData;
+class DataLayout;
 
 /// IVStrideUse - Keep track of one use of a strided induction variable.
 /// The Expr member keeps track of the expression, User is the actual user
@@ -123,7 +123,7 @@
   LoopInfo *LI;
   DominatorTree *DT;
   ScalarEvolution *SE;
-  TargetData *TD;
+  DataLayout *TD;
   SmallPtrSet<Instruction*,16> Processed;
 
   /// IVUses - A list of all tracked IV uses of induction variable expressions

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/InlineCost.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/InlineCost.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/InlineCost.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/InlineCost.h Tue Jan 15 11:16:16 2013
@@ -26,7 +26,7 @@
 namespace llvm {
 
   class CallSite;
-  class TargetData;
+  class DataLayout;
 
   namespace InlineConstants {
     // Various magic constants used to adjust heuristics.
@@ -36,6 +36,9 @@
     const int LastCallToStaticBonus = -15000;
     const int ColdccPenalty = 2000;
     const int NoreturnPenalty = 10000;
+    /// Do not inline functions which allocate this many bytes on the stack
+    /// when the caller is recursive.
+    const unsigned TotalAllocaSizeRecursiveCaller = 1024;
   }
 
   /// \brief Represents the cost of inlining a function.
@@ -101,13 +104,13 @@
 
   /// InlineCostAnalyzer - Cost analyzer used by inliner.
   class InlineCostAnalyzer {
-    // TargetData if available, or null.
-    const TargetData *TD;
+    // DataLayout if available, or null.
+    const DataLayout *TD;
 
   public:
     InlineCostAnalyzer(): TD(0) {}
 
-    void setTargetData(const TargetData *TData) { TD = TData; }
+    void setDataLayout(const DataLayout *TData) { TD = TData; }
 
     /// \brief Get an InlineCost object representing the cost of inlining this
     /// callsite.

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/InstructionSimplify.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/InstructionSimplify.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/InstructionSimplify.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/InstructionSimplify.h Tue Jan 15 11:16:16 2013
@@ -24,7 +24,7 @@
   class ArrayRef;
   class DominatorTree;
   class Instruction;
-  class TargetData;
+  class DataLayout;
   class TargetLibraryInfo;
   class Type;
   class Value;
@@ -32,122 +32,122 @@
   /// SimplifyAddInst - Given operands for an Add, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyAddInst(Value *LHS, Value *RHS, bool isNSW, bool isNUW,
-                         const TargetData *TD = 0,
+                         const DataLayout *TD = 0,
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
   /// SimplifySubInst - Given operands for a Sub, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifySubInst(Value *LHS, Value *RHS, bool isNSW, bool isNUW,
-                         const TargetData *TD = 0,
+                         const DataLayout *TD = 0,
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
   /// SimplifyMulInst - Given operands for a Mul, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyMulInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifyMulInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
   /// SimplifySDivInst - Given operands for an SDiv, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifySDivInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifySDivInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyUDivInst - Given operands for a UDiv, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyUDivInst(Value *LHS, Value *RHS, const TargetData *TD = 0, 
+  Value *SimplifyUDivInst(Value *LHS, Value *RHS, const DataLayout *TD = 0, 
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyFDivInst - Given operands for an FDiv, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyFDivInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifyFDivInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifySRemInst - Given operands for an SRem, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifySRemInst(Value *LHS, Value *RHS, const TargetData *TD = 0, 
+  Value *SimplifySRemInst(Value *LHS, Value *RHS, const DataLayout *TD = 0, 
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyURemInst - Given operands for a URem, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyURemInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifyURemInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyFRemInst - Given operands for an FRem, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyFRemInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifyFRemInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyShlInst - Given operands for a Shl, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyShlInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
-                         const TargetData *TD = 0, 
+                         const DataLayout *TD = 0, 
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
   /// SimplifyLShrInst - Given operands for a LShr, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyLShrInst(Value *Op0, Value *Op1, bool isExact,
-                          const TargetData *TD = 0,
+                          const DataLayout *TD = 0,
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyAShrInst - Given operands for a AShr, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyAShrInst(Value *Op0, Value *Op1, bool isExact,
-                          const TargetData *TD = 0,
+                          const DataLayout *TD = 0,
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyAndInst - Given operands for an And, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyAndInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifyAndInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
   /// SimplifyOrInst - Given operands for an Or, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyOrInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifyOrInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                         const TargetLibraryInfo *TLI = 0,
                         const DominatorTree *DT = 0);
 
   /// SimplifyXorInst - Given operands for a Xor, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyXorInst(Value *LHS, Value *RHS, const TargetData *TD = 0,
+  Value *SimplifyXorInst(Value *LHS, Value *RHS, const DataLayout *TD = 0,
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
   /// SimplifyICmpInst - Given operands for an ICmpInst, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyICmpInst(unsigned Predicate, Value *LHS, Value *RHS,
-                          const TargetData *TD = 0, 
+                          const DataLayout *TD = 0, 
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifyFCmpInst - Given operands for an FCmpInst, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
-                          const TargetData *TD = 0, 
+                          const DataLayout *TD = 0, 
                           const TargetLibraryInfo *TLI = 0,
                           const DominatorTree *DT = 0);
 
   /// SimplifySelectInst - Given operands for a SelectInst, see if we can fold
   /// the result.  If not, this returns null.
   Value *SimplifySelectInst(Value *Cond, Value *TrueVal, Value *FalseVal,
-                            const TargetData *TD = 0,
+                            const DataLayout *TD = 0,
                             const TargetLibraryInfo *TLI = 0,
                             const DominatorTree *DT = 0);
 
   /// SimplifyGEPInst - Given operands for an GetElementPtrInst, see if we can
   /// fold the result.  If not, this returns null.
-  Value *SimplifyGEPInst(ArrayRef<Value *> Ops, const TargetData *TD = 0,
+  Value *SimplifyGEPInst(ArrayRef<Value *> Ops, const DataLayout *TD = 0,
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
@@ -155,13 +155,13 @@
   /// can fold the result.  If not, this returns null.
   Value *SimplifyInsertValueInst(Value *Agg, Value *Val,
                                  ArrayRef<unsigned> Idxs,
-                                 const TargetData *TD = 0,
+                                 const DataLayout *TD = 0,
                                  const TargetLibraryInfo *TLI = 0,
                                  const DominatorTree *DT = 0);
 
   /// SimplifyTruncInst - Given operands for an TruncInst, see if we can fold
   /// the result.  If not, this returns null.
-  Value *SimplifyTruncInst(Value *Op, Type *Ty, const TargetData *TD = 0,
+  Value *SimplifyTruncInst(Value *Op, Type *Ty, const DataLayout *TD = 0,
                            const TargetLibraryInfo *TLI = 0,
                            const DominatorTree *DT = 0);
 
@@ -171,20 +171,20 @@
   /// SimplifyCmpInst - Given operands for a CmpInst, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyCmpInst(unsigned Predicate, Value *LHS, Value *RHS,
-                         const TargetData *TD = 0,
+                         const DataLayout *TD = 0,
                          const TargetLibraryInfo *TLI = 0,
                          const DominatorTree *DT = 0);
 
   /// SimplifyBinOp - Given operands for a BinaryOperator, see if we can
   /// fold the result.  If not, this returns null.
   Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS,
-                       const TargetData *TD = 0, 
+                       const DataLayout *TD = 0, 
                        const TargetLibraryInfo *TLI = 0,
                        const DominatorTree *DT = 0);
 
   /// SimplifyInstruction - See if we can compute a simplified version of this
   /// instruction.  If not, this returns null.
-  Value *SimplifyInstruction(Instruction *I, const TargetData *TD = 0,
+  Value *SimplifyInstruction(Instruction *I, const DataLayout *TD = 0,
                              const TargetLibraryInfo *TLI = 0,
                              const DominatorTree *DT = 0);
 
@@ -198,7 +198,7 @@
   ///
   /// The function returns true if any simplifications were performed.
   bool replaceAndRecursivelySimplify(Instruction *I, Value *SimpleV,
-                                     const TargetData *TD = 0,
+                                     const DataLayout *TD = 0,
                                      const TargetLibraryInfo *TLI = 0,
                                      const DominatorTree *DT = 0);
 
@@ -209,7 +209,7 @@
   /// of the users impacted. It returns true if any simplifications were
   /// performed.
   bool recursivelySimplifyInstruction(Instruction *I,
-                                      const TargetData *TD = 0,
+                                      const DataLayout *TD = 0,
                                       const TargetLibraryInfo *TLI = 0,
                                       const DominatorTree *DT = 0);
 } // end namespace llvm

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/IntervalPartition.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/IntervalPartition.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/IntervalPartition.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/IntervalPartition.h Tue Jan 15 11:16:16 2013
@@ -33,8 +33,8 @@
 //
 // IntervalPartition - This class builds and holds an "interval partition" for
 // a function.  This partition divides the control flow graph into a set of
-// maximal intervals, as defined with the properties above.  Intuitively, a
-// BasicBlock is a (possibly nonexistent) loop with a "tail" of non looping
+// maximal intervals, as defined with the properties above.  Intuitively, an
+// interval is a (possibly nonexistent) loop with a "tail" of non looping
 // nodes following it.
 //
 class IntervalPartition : public FunctionPass {

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/LazyValueInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/LazyValueInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/LazyValueInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/LazyValueInfo.h Tue Jan 15 11:16:16 2013
@@ -19,18 +19,18 @@
 
 namespace llvm {
   class Constant;
-  class TargetData;
+  class DataLayout;
   class TargetLibraryInfo;
   class Value;
   
 /// LazyValueInfo - This pass computes, caches, and vends lazy value constraint
 /// information.
 class LazyValueInfo : public FunctionPass {
-  class TargetData *TD;
+  class DataLayout *TD;
   class TargetLibraryInfo *TLI;
   void *PImpl;
-  LazyValueInfo(const LazyValueInfo&); // DO NOT IMPLEMENT.
-  void operator=(const LazyValueInfo&); // DO NOT IMPLEMENT.
+  LazyValueInfo(const LazyValueInfo&) LLVM_DELETED_FUNCTION;
+  void operator=(const LazyValueInfo&) LLVM_DELETED_FUNCTION;
 public:
   static char ID;
   LazyValueInfo() : FunctionPass(ID), PImpl(0) {

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/Loads.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/Loads.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/Loads.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/Loads.h Tue Jan 15 11:16:16 2013
@@ -19,7 +19,7 @@
 namespace llvm {
 
 class AliasAnalysis;
-class TargetData;
+class DataLayout;
 class MDNode;
 
 /// isSafeToLoadUnconditionally - Return true if we know that executing a load
@@ -27,7 +27,7 @@
 /// specified pointer, we do a quick local scan of the basic block containing
 /// ScanFrom, to determine if the address is already accessed.
 bool isSafeToLoadUnconditionally(Value *V, Instruction *ScanFrom,
-                                 unsigned Align, const TargetData *TD = 0);
+                                 unsigned Align, const DataLayout *TD = 0);
 
 /// FindAvailableLoadedValue - Scan the ScanBB block backwards (starting at
 /// the instruction before ScanFrom) checking to see if we have the value at

Removed: llvm/branches/AMDILBackend/include/llvm/Analysis/LoopDependenceAnalysis.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/LoopDependenceAnalysis.h?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/LoopDependenceAnalysis.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/LoopDependenceAnalysis.h (removed)
@@ -1,124 +0,0 @@
-//===- llvm/Analysis/LoopDependenceAnalysis.h --------------- -*- C++ -*---===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// LoopDependenceAnalysis is an LLVM pass that analyses dependences in memory
-// accesses in loops.
-//
-// Please note that this is work in progress and the interface is subject to
-// change.
-//
-// TODO: adapt as interface progresses
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_ANALYSIS_LOOP_DEPENDENCE_ANALYSIS_H
-#define LLVM_ANALYSIS_LOOP_DEPENDENCE_ANALYSIS_H
-
-#include "llvm/ADT/DenseSet.h"
-#include "llvm/ADT/FoldingSet.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/Analysis/LoopPass.h"
-#include "llvm/Support/Allocator.h"
-
-namespace llvm {
-
-class AliasAnalysis;
-class AnalysisUsage;
-class ScalarEvolution;
-class SCEV;
-class Value;
-class raw_ostream;
-
-class LoopDependenceAnalysis : public LoopPass {
-  AliasAnalysis *AA;
-  ScalarEvolution *SE;
-
-  /// L - The loop we are currently analysing.
-  Loop *L;
-
-  /// TODO: doc
-  enum DependenceResult { Independent = 0, Dependent = 1, Unknown = 2 };
-
-  /// TODO: doc
-  struct Subscript {
-    /// TODO: Add distance, direction, breaking conditions, ...
-  };
-
-  /// DependencePair - Represents a data dependence relation between to memory
-  /// reference instructions.
-  struct DependencePair : public FastFoldingSetNode {
-    Value *A;
-    Value *B;
-    DependenceResult Result;
-    SmallVector<Subscript, 4> Subscripts;
-
-    DependencePair(const FoldingSetNodeID &ID, Value *a, Value *b) :
-        FastFoldingSetNode(ID), A(a), B(b), Result(Unknown), Subscripts() {}
-  };
-
-  /// findOrInsertDependencePair - Return true if a DependencePair for the
-  /// given Values already exists, false if a new DependencePair had to be
-  /// created. The third argument is set to the pair found or created.
-  bool findOrInsertDependencePair(Value*, Value*, DependencePair*&);
-
-  /// getLoops - Collect all loops of the loop nest L in which
-  /// a given SCEV is variant.
-  void getLoops(const SCEV*, DenseSet<const Loop*>*) const;
-
-  /// isLoopInvariant - True if a given SCEV is invariant in all loops of the
-  /// loop nest starting at the innermost loop L.
-  bool isLoopInvariant(const SCEV*) const;
-
-  /// isAffine - An SCEV is affine with respect to the loop nest starting at
-  /// the innermost loop L if it is of the form A+B*X where A, B are invariant
-  /// in the loop nest and X is a induction variable in the loop nest.
-  bool isAffine(const SCEV*) const;
-
-  /// TODO: doc
-  bool isZIVPair(const SCEV*, const SCEV*) const;
-  bool isSIVPair(const SCEV*, const SCEV*) const;
-  DependenceResult analyseZIV(const SCEV*, const SCEV*, Subscript*) const;
-  DependenceResult analyseSIV(const SCEV*, const SCEV*, Subscript*) const;
-  DependenceResult analyseMIV(const SCEV*, const SCEV*, Subscript*) const;
-  DependenceResult analyseSubscript(const SCEV*, const SCEV*, Subscript*) const;
-  DependenceResult analysePair(DependencePair*) const;
-
-public:
-  static char ID; // Class identification, replacement for typeinfo
-  LoopDependenceAnalysis() : LoopPass(ID) {
-    initializeLoopDependenceAnalysisPass(*PassRegistry::getPassRegistry());
-  }
-
-  /// isDependencePair - Check whether two values can possibly give rise to
-  /// a data dependence: that is the case if both are instructions accessing
-  /// memory and at least one of those accesses is a write.
-  bool isDependencePair(const Value*, const Value*) const;
-
-  /// depends - Return a boolean indicating if there is a data dependence
-  /// between two instructions.
-  bool depends(Value*, Value*);
-
-  bool runOnLoop(Loop*, LPPassManager&);
-  virtual void releaseMemory();
-  virtual void getAnalysisUsage(AnalysisUsage&) const;
-  void print(raw_ostream&, const Module* = 0) const;
-
-private:
-  FoldingSet<DependencePair> Pairs;
-  BumpPtrAllocator PairAllocator;
-}; // class LoopDependenceAnalysis
-
-// createLoopDependenceAnalysisPass - This creates an instance of the
-// LoopDependenceAnalysis pass.
-//
-LoopPass *createLoopDependenceAnalysisPass();
-
-} // namespace llvm
-
-#endif /* LLVM_ANALYSIS_LOOP_DEPENDENCE_ANALYSIS_H */

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfo.h Tue Jan 15 11:16:16 2013
@@ -72,10 +72,9 @@
   // Blocks - The list of blocks in this loop.  First entry is the header node.
   std::vector<BlockT*> Blocks;
 
-  // DO NOT IMPLEMENT
-  LoopBase(const LoopBase<BlockT, LoopT> &);
-  // DO NOT IMPLEMENT
-  const LoopBase<BlockT, LoopT>&operator=(const LoopBase<BlockT, LoopT> &);
+  LoopBase(const LoopBase<BlockT, LoopT> &) LLVM_DELETED_FUNCTION;
+  const LoopBase<BlockT, LoopT>&
+    operator=(const LoopBase<BlockT, LoopT> &) LLVM_DELETED_FUNCTION;
 public:
   /// Loop ctor - This creates an empty loop.
   LoopBase() : ParentLoop(0) {}
@@ -416,8 +415,8 @@
   friend class LoopBase<BlockT, LoopT>;
   friend class LoopInfo;
 
-  void operator=(const LoopInfoBase &); // do not implement
-  LoopInfoBase(const LoopInfo &);       // do not implement
+  void operator=(const LoopInfoBase &) LLVM_DELETED_FUNCTION;
+  LoopInfoBase(const LoopInfo &) LLVM_DELETED_FUNCTION;
 public:
   LoopInfoBase() { }
   ~LoopInfoBase() { releaseMemory(); }
@@ -550,8 +549,8 @@
   LoopInfoBase<BasicBlock, Loop> LI;
   friend class LoopBase<BasicBlock, Loop>;
 
-  void operator=(const LoopInfo &); // do not implement
-  LoopInfo(const LoopInfo &);       // do not implement
+  void operator=(const LoopInfo &) LLVM_DELETED_FUNCTION;
+  LoopInfo(const LoopInfo &) LLVM_DELETED_FUNCTION;
 public:
   static char ID; // Pass identification, replacement for typeid
 

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfoImpl.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfoImpl.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfoImpl.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/LoopInfoImpl.h Tue Jan 15 11:16:16 2013
@@ -145,7 +145,6 @@
 
   // Loop over the predecessors of the header node...
   BlockT *Header = getHeader();
-  typedef GraphTraits<BlockT*> BlockTraits;
   typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
   for (typename InvBlockTraits::ChildIteratorType PI =
          InvBlockTraits::child_begin(Header),

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryBuiltins.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryBuiltins.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryBuiltins.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryBuiltins.h Tue Jan 15 11:16:16 2013
@@ -27,7 +27,8 @@
 namespace llvm {
 class CallInst;
 class PointerType;
-class TargetData;
+class DataLayout;
+class TargetLibraryInfo;
 class Type;
 class Value;
 
@@ -35,27 +36,33 @@
 /// \brief Tests if a value is a call or invoke to a library function that
 /// allocates or reallocates memory (either malloc, calloc, realloc, or strdup
 /// like).
-bool isAllocationFn(const Value *V, bool LookThroughBitCast = false);
+bool isAllocationFn(const Value *V, const TargetLibraryInfo *TLI,
+                    bool LookThroughBitCast = false);
 
 /// \brief Tests if a value is a call or invoke to a function that returns a
 /// NoAlias pointer (including malloc/calloc/realloc/strdup-like functions).
-bool isNoAliasFn(const Value *V, bool LookThroughBitCast = false);
+bool isNoAliasFn(const Value *V, const TargetLibraryInfo *TLI,
+                 bool LookThroughBitCast = false);
 
 /// \brief Tests if a value is a call or invoke to a library function that
 /// allocates uninitialized memory (such as malloc).
-bool isMallocLikeFn(const Value *V, bool LookThroughBitCast = false);
+bool isMallocLikeFn(const Value *V, const TargetLibraryInfo *TLI,
+                    bool LookThroughBitCast = false);
 
 /// \brief Tests if a value is a call or invoke to a library function that
 /// allocates zero-filled memory (such as calloc).
-bool isCallocLikeFn(const Value *V, bool LookThroughBitCast = false);
+bool isCallocLikeFn(const Value *V, const TargetLibraryInfo *TLI,
+                    bool LookThroughBitCast = false);
 
 /// \brief Tests if a value is a call or invoke to a library function that
 /// allocates memory (either malloc, calloc, or strdup like).
-bool isAllocLikeFn(const Value *V, bool LookThroughBitCast = false);
+bool isAllocLikeFn(const Value *V, const TargetLibraryInfo *TLI,
+                   bool LookThroughBitCast = false);
 
 /// \brief Tests if a value is a call or invoke to a library function that
 /// reallocates memory (such as realloc).
-bool isReallocLikeFn(const Value *V, bool LookThroughBitCast = false);
+bool isReallocLikeFn(const Value *V, const TargetLibraryInfo *TLI,
+                     bool LookThroughBitCast = false);
 
 
 //===----------------------------------------------------------------------===//
@@ -65,36 +72,39 @@
 /// extractMallocCall - Returns the corresponding CallInst if the instruction
 /// is a malloc call.  Since CallInst::CreateMalloc() only creates calls, we
 /// ignore InvokeInst here.
-const CallInst *extractMallocCall(const Value *I);
-static inline CallInst *extractMallocCall(Value *I) {
-  return const_cast<CallInst*>(extractMallocCall((const Value*)I));
+const CallInst *extractMallocCall(const Value *I, const TargetLibraryInfo *TLI);
+static inline CallInst *extractMallocCall(Value *I,
+                                          const TargetLibraryInfo *TLI) {
+  return const_cast<CallInst*>(extractMallocCall((const Value*)I, TLI));
 }
 
 /// isArrayMalloc - Returns the corresponding CallInst if the instruction 
 /// is a call to malloc whose array size can be determined and the array size
 /// is not constant 1.  Otherwise, return NULL.
-const CallInst *isArrayMalloc(const Value *I, const TargetData *TD);
+const CallInst *isArrayMalloc(const Value *I, const DataLayout *TD,
+                              const TargetLibraryInfo *TLI);
 
 /// getMallocType - Returns the PointerType resulting from the malloc call.
 /// The PointerType depends on the number of bitcast uses of the malloc call:
 ///   0: PointerType is the malloc calls' return type.
 ///   1: PointerType is the bitcast's result type.
 ///  >1: Unique PointerType cannot be determined, return NULL.
-PointerType *getMallocType(const CallInst *CI);
+PointerType *getMallocType(const CallInst *CI, const TargetLibraryInfo *TLI);
 
 /// getMallocAllocatedType - Returns the Type allocated by malloc call.
 /// The Type depends on the number of bitcast uses of the malloc call:
 ///   0: PointerType is the malloc calls' return type.
 ///   1: PointerType is the bitcast's result type.
 ///  >1: Unique PointerType cannot be determined, return NULL.
-Type *getMallocAllocatedType(const CallInst *CI);
+Type *getMallocAllocatedType(const CallInst *CI, const TargetLibraryInfo *TLI);
 
 /// getMallocArraySize - Returns the array size of a malloc call.  If the 
 /// argument passed to malloc is a multiple of the size of the malloced type,
 /// then return that multiple.  For non-array mallocs, the multiple is
 /// constant 1.  Otherwise, return NULL for mallocs whose array size cannot be
 /// determined.
-Value *getMallocArraySize(CallInst *CI, const TargetData *TD,
+Value *getMallocArraySize(CallInst *CI, const DataLayout *TD,
+                          const TargetLibraryInfo *TLI,
                           bool LookThroughSExt = false);
 
 
@@ -104,9 +114,10 @@
 
 /// extractCallocCall - Returns the corresponding CallInst if the instruction
 /// is a calloc call.
-const CallInst *extractCallocCall(const Value *I);
-static inline CallInst *extractCallocCall(Value *I) {
-  return const_cast<CallInst*>(extractCallocCall((const Value*)I));
+const CallInst *extractCallocCall(const Value *I, const TargetLibraryInfo *TLI);
+static inline CallInst *extractCallocCall(Value *I,
+                                          const TargetLibraryInfo *TLI) {
+  return const_cast<CallInst*>(extractCallocCall((const Value*)I, TLI));
 }
 
 
@@ -115,10 +126,10 @@
 //
 
 /// isFreeCall - Returns non-null if the value is a call to the builtin free()
-const CallInst *isFreeCall(const Value *I);
+const CallInst *isFreeCall(const Value *I, const TargetLibraryInfo *TLI);
   
-static inline CallInst *isFreeCall(Value *I) {
-  return const_cast<CallInst*>(isFreeCall((const Value*)I));
+static inline CallInst *isFreeCall(Value *I, const TargetLibraryInfo *TLI) {
+  return const_cast<CallInst*>(isFreeCall((const Value*)I, TLI));
 }
 
   
@@ -130,8 +141,8 @@
 /// object size in Size if successful, and false otherwise.
 /// If RoundToAlign is true, then Size is rounded up to the aligment of allocas,
 /// byval arguments, and global variables.
-bool getObjectSize(const Value *Ptr, uint64_t &Size, const TargetData *TD,
-                   bool RoundToAlign = false);
+bool getObjectSize(const Value *Ptr, uint64_t &Size, const DataLayout *TD,
+                   const TargetLibraryInfo *TLI, bool RoundToAlign = false);
 
 
 
@@ -142,10 +153,12 @@
 class ObjectSizeOffsetVisitor
   : public InstVisitor<ObjectSizeOffsetVisitor, SizeOffsetType> {
 
-  const TargetData *TD;
+  const DataLayout *TD;
+  const TargetLibraryInfo *TLI;
   bool RoundToAlign;
   unsigned IntTyBits;
   APInt Zero;
+  SmallPtrSet<Instruction *, 8> SeenInsts;
 
   APInt align(APInt Size, uint64_t Align);
 
@@ -154,8 +167,8 @@
   }
 
 public:
-  ObjectSizeOffsetVisitor(const TargetData *TD, LLVMContext &Context,
-                          bool RoundToAlign = false);
+  ObjectSizeOffsetVisitor(const DataLayout *TD, const TargetLibraryInfo *TLI,
+                          LLVMContext &Context, bool RoundToAlign = false);
 
   SizeOffsetType compute(Value *V);
 
@@ -200,10 +213,10 @@
   typedef DenseMap<const Value*, WeakEvalType> CacheMapTy;
   typedef SmallPtrSet<const Value*, 8> PtrSetTy;
 
-  const TargetData *TD;
+  const DataLayout *TD;
+  const TargetLibraryInfo *TLI;
   LLVMContext &Context;
   BuilderTy Builder;
-  ObjectSizeOffsetVisitor Visitor;
   IntegerType *IntTy;
   Value *Zero;
   CacheMapTy CacheMap;
@@ -215,7 +228,8 @@
   SizeOffsetEvalType compute_(Value *V);
 
 public:
-  ObjectSizeOffsetEvaluator(const TargetData *TD, LLVMContext &Context);
+  ObjectSizeOffsetEvaluator(const DataLayout *TD, const TargetLibraryInfo *TLI,
+                            LLVMContext &Context);
   SizeOffsetEvalType compute(Value *V);
 
   bool knownSize(SizeOffsetEvalType SizeOffset) {

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryDependenceAnalysis.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryDependenceAnalysis.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryDependenceAnalysis.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/MemoryDependenceAnalysis.h Tue Jan 15 11:16:16 2013
@@ -29,7 +29,7 @@
   class Instruction;
   class CallSite;
   class AliasAnalysis;
-  class TargetData;
+  class DataLayout;
   class MemoryDependenceAnalysis;
   class PredIteratorCache;
   class DominatorTree;
@@ -124,11 +124,11 @@
     }
 
     /// isClobber - Return true if this MemDepResult represents a query that is
-    /// a instruction clobber dependency.
+    /// an instruction clobber dependency.
     bool isClobber() const { return Value.getInt() == Clobber; }
 
     /// isDef - Return true if this MemDepResult represents a query that is
-    /// a instruction definition dependency.
+    /// an instruction definition dependency.
     bool isDef() const { return Value.getInt() == Def; }
     
     /// isNonLocal - Return true if this MemDepResult represents a query that
@@ -323,7 +323,7 @@
     
     /// Current AA implementation, just a cache.
     AliasAnalysis *AA;
-    TargetData *TD;
+    DataLayout *TD;
     DominatorTree *DT;
     OwningPtr<PredIteratorCache> PredCache;
   public:
@@ -412,7 +412,7 @@
                                                     int64_t MemLocOffs,
                                                     unsigned MemLocSize,
                                                     const LoadInst *LI,
-                                                    const TargetData &TD);
+                                                    const DataLayout &TD);
     
   private:
     MemDepResult getCallSiteDependencyFrom(CallSite C, bool isReadOnlyCall,

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/PHITransAddr.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/PHITransAddr.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/PHITransAddr.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/PHITransAddr.h Tue Jan 15 11:16:16 2013
@@ -19,7 +19,7 @@
 
 namespace llvm {
   class DominatorTree;
-  class TargetData;
+  class DataLayout;
   class TargetLibraryInfo;
 
 /// PHITransAddr - An address value which tracks and handles phi translation.
@@ -37,7 +37,7 @@
   Value *Addr;
   
   /// TD - The target data we are playing with if known, otherwise null.
-  const TargetData *TD;
+  const DataLayout *TD;
 
   /// TLI - The target library info if known, otherwise null.
   const TargetLibraryInfo *TLI;
@@ -45,7 +45,7 @@
   /// InstInputs - The inputs for our symbolic address.
   SmallVector<Instruction*, 4> InstInputs;
 public:
-  PHITransAddr(Value *addr, const TargetData *td) : Addr(addr), TD(td), TLI(0) {
+  PHITransAddr(Value *addr, const DataLayout *td) : Addr(addr), TD(td), TLI(0) {
     // If the address is an instruction, the whole thing is considered an input.
     if (Instruction *I = dyn_cast<Instruction>(Addr))
       InstInputs.push_back(I);

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/Passes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/Passes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/Passes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/Passes.h Tue Jan 15 11:16:16 2013
@@ -103,6 +103,14 @@
 
   //===--------------------------------------------------------------------===//
   //
+  // createProfileMetadataLoaderPass - This pass loads information from a
+  // profile dump file and sets branch weight metadata.
+  //
+  ModulePass *createProfileMetadataLoaderPass();
+  extern char &ProfileMetadataLoaderPassID;
+
+  //===--------------------------------------------------------------------===//
+  //
   // createNoProfileInfoPass - This pass implements the default "no profile".
   //
   ImmutablePass *createNoProfileInfoPass();
@@ -172,11 +180,20 @@
 
   //===--------------------------------------------------------------------===//
   //
-  // createLoopDependenceAnalysisPass - This creates an instance of the
-  // LoopDependenceAnalysis pass.
+  // createDependenceAnalysisPass - This creates an instance of the
+  // DependenceAnalysis pass.
+  //
+  FunctionPass *createDependenceAnalysisPass();
+
+  //===--------------------------------------------------------------------===//
+  //
+  // createCostModelAnalysisPass - This creates an instance of the
+  // CostModelAnalysis pass.
   //
-  LoopPass *createLoopDependenceAnalysisPass();
+  FunctionPass *createCostModelAnalysisPass();
 
+  //===--------------------------------------------------------------------===//
+  //
   // Minor pass prototypes, allowing us to expose them through bugpoint and
   // analyze.
   FunctionPass *createInstCountPass();

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/ProfileInfoTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/ProfileInfoTypes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/ProfileInfoTypes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/ProfileInfoTypes.h Tue Jan 15 11:16:16 2013
@@ -27,15 +27,7 @@
   ProfilingHash = 2
 };
 
-enum ProfilingType {
-  ArgumentInfo  = 1,   /* The command line argument block */
-  FunctionInfo  = 2,   /* Function profiling information  */
-  BlockInfo     = 3,   /* Block profiling information     */
-  EdgeInfo      = 4,   /* Edge profiling information      */
-  PathInfo      = 5,   /* Path profiling information      */
-  BBTraceInfo   = 6,   /* Basic block trace information   */
-  OptEdgeInfo   = 7    /* Edge profiling information, optimal version */
-};
+#include "llvm/Analysis/ProfileDataTypes.h"
 
 /*
  * The header for tables that map path numbers to path counters.

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/RegionInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/RegionInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/RegionInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/RegionInfo.h Tue Jan 15 11:16:16 2013
@@ -54,10 +54,8 @@
 /// @brief A RegionNode represents a subregion or a BasicBlock that is part of a
 /// Region.
 class RegionNode {
-  // DO NOT IMPLEMENT
-  RegionNode(const RegionNode &);
-  // DO NOT IMPLEMENT
-  const RegionNode &operator=(const RegionNode &);
+  RegionNode(const RegionNode &) LLVM_DELETED_FUNCTION;
+  const RegionNode &operator=(const RegionNode &) LLVM_DELETED_FUNCTION;
 
 protected:
   /// This is the entry basic block that starts this region node.  If this is a
@@ -203,10 +201,8 @@
 /// tree, the second one creates a graphical representation using graphviz.
 class Region : public RegionNode {
   friend class RegionInfo;
-  // DO NOT IMPLEMENT
-  Region(const Region &);
-  // DO NOT IMPLEMENT
-  const Region &operator=(const Region &);
+  Region(const Region &) LLVM_DELETED_FUNCTION;
+  const Region &operator=(const Region &) LLVM_DELETED_FUNCTION;
 
   // Information necessary to manage this Region.
   RegionInfo* RI;
@@ -473,27 +469,6 @@
   const_iterator end() const { return children.end(); }
   //@}
 
-  /// @name BasicBlock Node Iterators
-  ///
-  /// These iterators iterate over all BasicBlock RegionNodes that are
-  /// contained in this Region. The iterator also iterates over BasicBlock
-  /// RegionNodes that are elements of a subregion of this Region. It is
-  /// therefore called a flat iterator.
-  //@{
-  typedef df_iterator<RegionNode*, SmallPtrSet<RegionNode*, 8>, false,
-                      GraphTraits<FlatIt<RegionNode*> > > block_node_iterator;
-
-  typedef df_iterator<const RegionNode*, SmallPtrSet<const RegionNode*, 8>,
-                      false, GraphTraits<FlatIt<const RegionNode*> > >
-            const_block_node_iterator;
-
-  block_node_iterator block_node_begin();
-  block_node_iterator block_node_end();
-
-  const_block_node_iterator block_node_begin() const;
-  const_block_node_iterator block_node_end() const;
-  //@}
-
   /// @name BasicBlock Iterators
   ///
   /// These iterators iterate over all BasicBlocks that are contained in this
@@ -586,10 +561,8 @@
   typedef DenseMap<BasicBlock*, Region*> BBtoRegionMap;
   typedef SmallPtrSet<Region*, 4> RegionSet;
 
-  // DO NOT IMPLEMENT
-  RegionInfo(const RegionInfo &);
-  // DO NOT IMPLEMENT
-  const RegionInfo &operator=(const RegionInfo &);
+  RegionInfo(const RegionInfo &) LLVM_DELETED_FUNCTION;
+  const RegionInfo &operator=(const RegionInfo &) LLVM_DELETED_FUNCTION;
 
   DominatorTree *DT;
   PostDominatorTree *PDT;

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolution.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolution.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolution.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolution.h Tue Jan 15 11:16:16 2013
@@ -40,7 +40,7 @@
   class DominatorTree;
   class Type;
   class ScalarEvolution;
-  class TargetData;
+  class DataLayout;
   class TargetLibraryInfo;
   class LLVMContext;
   class Loop;
@@ -70,8 +70,8 @@
     unsigned short SubclassData;
 
   private:
-    SCEV(const SCEV &);            // DO NOT IMPLEMENT
-    void operator=(const SCEV &);  // DO NOT IMPLEMENT
+    SCEV(const SCEV &) LLVM_DELETED_FUNCTION;
+    void operator=(const SCEV &) LLVM_DELETED_FUNCTION;
 
   public:
     /// NoWrapFlags are bitfield indices into SubclassData.
@@ -162,7 +162,6 @@
     SCEVCouldNotCompute();
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVCouldNotCompute *S) { return true; }
     static bool classof(const SCEV *S);
   };
 
@@ -227,7 +226,7 @@
 
     /// TD - The target data information for the target we are targeting.
     ///
-    TargetData *TD;
+    DataLayout *TD;
 
     /// TLI - The target library information for the target we are targeting.
     ///
@@ -874,6 +873,7 @@
     virtual void releaseMemory();
     virtual void getAnalysisUsage(AnalysisUsage &AU) const;
     virtual void print(raw_ostream &OS, const Module* = 0) const;
+    virtual void verifyAnalysis() const;
 
   private:
     FoldingSet<SCEV> UniqueSCEVs;

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolutionExpressions.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolutionExpressions.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolutionExpressions.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/ScalarEvolutionExpressions.h Tue Jan 15 11:16:16 2013
@@ -46,7 +46,6 @@
     Type *getType() const { return V->getType(); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVConstant *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scConstant;
     }
@@ -68,7 +67,6 @@
     Type *getType() const { return Ty; }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVCastExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scTruncate ||
              S->getSCEVType() == scZeroExtend ||
@@ -88,7 +86,6 @@
 
   public:
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVTruncateExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scTruncate;
     }
@@ -106,7 +103,6 @@
 
   public:
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVZeroExtendExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scZeroExtend;
     }
@@ -124,7 +120,6 @@
 
   public:
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVSignExtendExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scSignExtend;
     }
@@ -166,7 +161,6 @@
     }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVNAryExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scAddExpr ||
              S->getSCEVType() == scMulExpr ||
@@ -188,7 +182,6 @@
 
   public:
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVCommutativeExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scAddExpr ||
              S->getSCEVType() == scMulExpr ||
@@ -223,7 +216,6 @@
     }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVAddExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scAddExpr;
     }
@@ -242,7 +234,6 @@
 
   public:
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVMulExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scMulExpr;
     }
@@ -274,7 +265,6 @@
     }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVUDivExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scUDivExpr;
     }
@@ -358,7 +348,6 @@
     }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVAddRecExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scAddRecExpr;
     }
@@ -380,7 +369,6 @@
 
   public:
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVSMaxExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scSMaxExpr;
     }
@@ -402,7 +390,6 @@
 
   public:
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVUMaxExpr *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scUMaxExpr;
     }
@@ -449,7 +436,6 @@
     Type *getType() const { return getValPtr()->getType(); }
 
     /// Methods for support type inquiry through isa, cast, and dyn_cast:
-    static inline bool classof(const SCEVUnknown *S) { return true; }
     static inline bool classof(const SCEV *S) {
       return S->getSCEVType() == scUnknown;
     }

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/SparsePropagation.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/SparsePropagation.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/SparsePropagation.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/SparsePropagation.h Tue Jan 15 11:16:16 2013
@@ -130,9 +130,9 @@
   /// PHI nodes retriggered.
   typedef std::pair<BasicBlock*,BasicBlock*> Edge;
   std::set<Edge> KnownFeasibleEdges;
-  
-  SparseSolver(const SparseSolver&);    // DO NOT IMPLEMENT
-  void operator=(const SparseSolver&);  // DO NOT IMPLEMENT
+
+  SparseSolver(const SparseSolver&) LLVM_DELETED_FUNCTION;
+  void operator=(const SparseSolver&) LLVM_DELETED_FUNCTION;
 public:
   explicit SparseSolver(AbstractLatticeFunction *Lattice)
     : LatticeFunc(Lattice) {}

Modified: llvm/branches/AMDILBackend/include/llvm/Analysis/ValueTracking.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Analysis/ValueTracking.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Analysis/ValueTracking.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Analysis/ValueTracking.h Tue Jan 15 11:16:16 2013
@@ -22,7 +22,7 @@
   class Value;
   class Instruction;
   class APInt;
-  class TargetData;
+  class DataLayout;
   class StringRef;
   class MDNode;
 
@@ -37,27 +37,27 @@
   /// same width as the vector element, and the bit is set only if it is true
   /// for all of the elements in the vector.
   void ComputeMaskedBits(Value *V,  APInt &KnownZero, APInt &KnownOne,
-                         const TargetData *TD = 0, unsigned Depth = 0);
+                         const DataLayout *TD = 0, unsigned Depth = 0);
   void computeMaskedBitsLoad(const MDNode &Ranges, APInt &KnownZero);
 
   /// ComputeSignBit - Determine whether the sign bit is known to be zero or
   /// one.  Convenience wrapper around ComputeMaskedBits.
   void ComputeSignBit(Value *V, bool &KnownZero, bool &KnownOne,
-                      const TargetData *TD = 0, unsigned Depth = 0);
+                      const DataLayout *TD = 0, unsigned Depth = 0);
 
   /// isPowerOfTwo - Return true if the given value is known to have exactly one
   /// bit set when defined. For vectors return true if every element is known to
   /// be a power of two when defined.  Supports values with integer or pointer
   /// type and vectors of integers.  If 'OrZero' is set then returns true if the
   /// given value is either a power of two or zero.
-  bool isPowerOfTwo(Value *V, const TargetData *TD = 0, bool OrZero = false,
+  bool isPowerOfTwo(Value *V, const DataLayout *TD = 0, bool OrZero = false,
                     unsigned Depth = 0);
 
   /// isKnownNonZero - Return true if the given value is known to be non-zero
   /// when defined.  For vectors return true if every element is known to be
   /// non-zero when defined.  Supports values with integer or pointer type and
   /// vectors of integers.
-  bool isKnownNonZero(Value *V, const TargetData *TD = 0, unsigned Depth = 0);
+  bool isKnownNonZero(Value *V, const DataLayout *TD = 0, unsigned Depth = 0);
 
   /// MaskedValueIsZero - Return true if 'V & Mask' is known to be zero.  We use
   /// this predicate to simplify operations downstream.  Mask is known to be
@@ -69,7 +69,7 @@
   /// same width as the vector element, and the bit is set only if it is true
   /// for all of the elements in the vector.
   bool MaskedValueIsZero(Value *V, const APInt &Mask, 
-                         const TargetData *TD = 0, unsigned Depth = 0);
+                         const DataLayout *TD = 0, unsigned Depth = 0);
 
   
   /// ComputeNumSignBits - Return the number of times the sign bit of the
@@ -80,7 +80,7 @@
   ///
   /// 'Op' must have a scalar integer type.
   ///
-  unsigned ComputeNumSignBits(Value *Op, const TargetData *TD = 0,
+  unsigned ComputeNumSignBits(Value *Op, const DataLayout *TD = 0,
                               unsigned Depth = 0);
 
   /// ComputeMultiple - This function computes the integer multiple of Base that
@@ -118,10 +118,10 @@
   /// it can be expressed as a base pointer plus a constant offset.  Return the
   /// base and offset to the caller.
   Value *GetPointerBaseWithConstantOffset(Value *Ptr, int64_t &Offset,
-                                          const TargetData &TD);
+                                          const DataLayout &TD);
   static inline const Value *
   GetPointerBaseWithConstantOffset(const Value *Ptr, int64_t &Offset,
-                                   const TargetData &TD) {
+                                   const DataLayout &TD) {
     return GetPointerBaseWithConstantOffset(const_cast<Value*>(Ptr), Offset,TD);
   }
   
@@ -143,10 +143,10 @@
   /// being addressed.  Note that the returned value has pointer type if the
   /// specified value does.  If the MaxLookup value is non-zero, it limits the
   /// number of instructions to be stripped off.
-  Value *GetUnderlyingObject(Value *V, const TargetData *TD = 0,
+  Value *GetUnderlyingObject(Value *V, const DataLayout *TD = 0,
                              unsigned MaxLookup = 6);
   static inline const Value *
-  GetUnderlyingObject(const Value *V, const TargetData *TD = 0,
+  GetUnderlyingObject(const Value *V, const DataLayout *TD = 0,
                       unsigned MaxLookup = 6) {
     return GetUnderlyingObject(const_cast<Value *>(V), TD, MaxLookup);
   }
@@ -156,7 +156,7 @@
   /// multiple objects.
   void GetUnderlyingObjects(Value *V,
                             SmallVectorImpl<Value *> &Objects,
-                            const TargetData *TD = 0,
+                            const DataLayout *TD = 0,
                             unsigned MaxLookup = 6);
 
   /// onlyUsedByLifetimeMarkers - Return true if the only users of this pointer
@@ -182,7 +182,7 @@
   /// However, this method can return true for instructions that read memory;
   /// for such instructions, moving them may change the resulting value.
   bool isSafeToSpeculativelyExecute(const Value *V,
-                                    const TargetData *TD = 0);
+                                    const DataLayout *TD = 0);
 
 } // end namespace llvm
 

Modified: llvm/branches/AMDILBackend/include/llvm/Argument.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Argument.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Argument.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Argument.h Tue Jan 15 11:16:16 2013
@@ -68,8 +68,8 @@
   /// attribute on it in its containing function.
   bool hasNoCaptureAttr() const;
   
-  /// hasSRetAttr - Return true if this argument has the sret attribute on it in
-  /// its containing function.
+  /// hasStructRetAttr - Return true if this argument has the sret attribute on
+  /// it in its containing function.
   bool hasStructRetAttr() const;
 
   /// addAttr - Add a Attribute to an argument
@@ -81,7 +81,6 @@
   /// classof - Methods for support type inquiry through isa, cast, and
   /// dyn_cast:
   ///
-  static inline bool classof(const Argument *) { return true; }
   static inline bool classof(const Value *V) {
     return V->getValueID() == ArgumentVal;
   }

Modified: llvm/branches/AMDILBackend/include/llvm/Attributes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Attributes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Attributes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Attributes.h Tue Jan 15 11:16:16 2013
@@ -21,268 +21,280 @@
 #include <string>
 
 namespace llvm {
-class Type;
-
-namespace Attribute {
-/// We use this proxy POD type to allow constructing Attributes constants
-/// using initializer lists. Do not use this class directly.
-struct AttrConst {
-  uint64_t v;
-  AttrConst operator | (const AttrConst Attrs) const {
-    AttrConst Res = {v | Attrs.v};
-    return Res;
-  }
-  AttrConst operator ~ () const {
-    AttrConst Res = {~v};
-    return Res;
-  }
-};
-}  // namespace Attribute
 
+class AttrBuilder;
+class AttributesImpl;
+class LLVMContext;
+class Type;
 
 /// Attributes - A bitset of attributes.
 class Attributes {
- public:
-  Attributes() : Bits(0) { }
-  explicit Attributes(uint64_t Val) : Bits(Val) { }
-  /*implicit*/ Attributes(Attribute::AttrConst Val) : Bits(Val.v) { }
-  // This is a "safe bool() operator".
-  operator const void *() const { return Bits ? this : 0; }
-  bool isEmptyOrSingleton() const { return (Bits & (Bits - 1)) == 0; }
-  bool operator == (const Attributes &Attrs) const {
-    return Bits == Attrs.Bits;
-  }
-  bool operator != (const Attributes &Attrs) const {
-    return Bits != Attrs.Bits;
-  }
-  Attributes operator | (const Attributes &Attrs) const {
-    return Attributes(Bits | Attrs.Bits);
-  }
-  Attributes operator & (const Attributes &Attrs) const {
-    return Attributes(Bits & Attrs.Bits);
-  }
-  Attributes operator ^ (const Attributes &Attrs) const {
-    return Attributes(Bits ^ Attrs.Bits);
-  }
-  Attributes &operator |= (const Attributes &Attrs) {
-    Bits |= Attrs.Bits;
-    return *this;
-  }
-  Attributes &operator &= (const Attributes &Attrs) {
-    Bits &= Attrs.Bits;
+public:
+  /// Function parameters and results can have attributes to indicate how they
+  /// should be treated by optimizations and code generation. This enumeration
+  /// lists the attributes that can be associated with parameters, function
+  /// results or the function itself.
+  ///
+  /// Note that uwtable is about the ABI or the user mandating an entry in the
+  /// unwind table. The nounwind attribute is about an exception passing by the
+  /// function.
+  ///
+  /// In a theoretical system that uses tables for profiling and sjlj for
+  /// exceptions, they would be fully independent. In a normal system that uses
+  /// tables for both, the semantics are:
+  ///
+  /// nil                = Needs an entry because an exception might pass by.
+  /// nounwind           = No need for an entry
+  /// uwtable            = Needs an entry because the ABI says so and because
+  ///                      an exception might pass by.
+  /// uwtable + nounwind = Needs an entry because the ABI says so.
+
+  enum AttrVal {
+    // IR-Level Attributes
+    None,                  ///< No attributes have been set
+    AddressSafety,         ///< Address safety checking is on.
+    Alignment,             ///< Alignment of parameter (5 bits)
+                           ///< stored as log2 of alignment with +1 bias
+                           ///< 0 means unaligned different from align 1
+    AlwaysInline,          ///< inline=always
+    ByVal,                 ///< Pass structure by value
+    InlineHint,            ///< Source said inlining was desirable
+    InReg,                 ///< Force argument to be passed in register
+    MinSize,               ///< Function must be optimized for size first
+    Naked,                 ///< Naked function
+    Nest,                  ///< Nested function static chain
+    NoAlias,               ///< Considered to not alias after call
+    NoCapture,             ///< Function creates no aliases of pointer
+    NoImplicitFloat,       ///< Disable implicit floating point insts
+    NoInline,              ///< inline=never
+    NonLazyBind,           ///< Function is called early and/or
+                           ///< often, so lazy binding isn't worthwhile
+    NoRedZone,             ///< Disable redzone
+    NoReturn,              ///< Mark the function as not returning
+    NoUnwind,              ///< Function doesn't unwind stack
+    OptimizeForSize,       ///< opt_size
+    ReadNone,              ///< Function does not access memory
+    ReadOnly,              ///< Function only reads from memory
+    ReturnsTwice,          ///< Function can return twice
+    SExt,                  ///< Sign extended before/after call
+    StackAlignment,        ///< Alignment of stack for function (3 bits)
+                           ///< stored as log2 of alignment with +1 bias 0
+                           ///< means unaligned (different from
+                           ///< alignstack={1))
+    StackProtect,          ///< Stack protection.
+    StackProtectReq,       ///< Stack protection required.
+    StructRet,             ///< Hidden pointer to structure to return
+    UWTable,               ///< Function must be in a unwind table
+    ZExt                   ///< Zero extended before/after call
+  };
+private:
+  AttributesImpl *Attrs;
+  Attributes(AttributesImpl *A) : Attrs(A) {}
+public:
+  Attributes() : Attrs(0) {}
+  Attributes(const Attributes &A) : Attrs(A.Attrs) {}
+  Attributes &operator=(const Attributes &A) {
+    Attrs = A.Attrs;
     return *this;
   }
-  Attributes operator ~ () const { return Attributes(~Bits); }
-  uint64_t Raw() const { return Bits; }
- private:
-  // Currently, we need less than 64 bits.
-  uint64_t Bits;
+
+  /// get - Return a uniquified Attributes object. This takes the uniquified
+  /// value from the Builder and wraps it in the Attributes class.
+  static Attributes get(LLVMContext &Context, ArrayRef<AttrVal> Vals);
+  static Attributes get(LLVMContext &Context, AttrBuilder &B);
+
+  /// @brief Return true if the attribute is present.
+  bool hasAttribute(AttrVal Val) const;
+
+  /// @brief Return true if attributes exist
+  bool hasAttributes() const;
+
+  /// @brief Return true if the attributes are a non-null intersection.
+  bool hasAttributes(const Attributes &A) const;
+
+  /// @brief Returns the alignment field of an attribute as a byte alignment
+  /// value.
+  unsigned getAlignment() const;
+
+  /// @brief Returns the stack alignment field of an attribute as a byte
+  /// alignment value.
+  unsigned getStackAlignment() const;
+
+  /// @brief Parameter attributes that do not apply to vararg call arguments.
+  bool hasIncompatibleWithVarArgsAttrs() const {
+    return hasAttribute(Attributes::StructRet);
+  }
+
+  /// @brief Attributes that only apply to function parameters.
+  bool hasParameterOnlyAttrs() const {
+    return hasAttribute(Attributes::ByVal) ||
+      hasAttribute(Attributes::Nest) ||
+      hasAttribute(Attributes::StructRet) ||
+      hasAttribute(Attributes::NoCapture);
+  }
+
+  /// @brief Attributes that may be applied to the function itself.  These cannot
+  /// be used on return values or function parameters.
+  bool hasFunctionOnlyAttrs() const {
+    return hasAttribute(Attributes::NoReturn) ||
+      hasAttribute(Attributes::NoUnwind) ||
+      hasAttribute(Attributes::ReadNone) ||
+      hasAttribute(Attributes::ReadOnly) ||
+      hasAttribute(Attributes::NoInline) ||
+      hasAttribute(Attributes::AlwaysInline) ||
+      hasAttribute(Attributes::OptimizeForSize) ||
+      hasAttribute(Attributes::StackProtect) ||
+      hasAttribute(Attributes::StackProtectReq) ||
+      hasAttribute(Attributes::NoRedZone) ||
+      hasAttribute(Attributes::NoImplicitFloat) ||
+      hasAttribute(Attributes::Naked) ||
+      hasAttribute(Attributes::InlineHint) ||
+      hasAttribute(Attributes::StackAlignment) ||
+      hasAttribute(Attributes::UWTable) ||
+      hasAttribute(Attributes::NonLazyBind) ||
+      hasAttribute(Attributes::ReturnsTwice) ||
+      hasAttribute(Attributes::AddressSafety) ||
+      hasAttribute(Attributes::MinSize);
+  }
+
+  bool operator==(const Attributes &A) const {
+    return Attrs == A.Attrs;
+  }
+  bool operator!=(const Attributes &A) const {
+    return Attrs != A.Attrs;
+  }
+
+  uint64_t Raw() const;
+
+  /// @brief Which attributes cannot be applied to a type.
+  static Attributes typeIncompatible(Type *Ty);
+
+  /// encodeLLVMAttributesForBitcode - This returns an integer containing an
+  /// encoding of all the LLVM attributes found in the given attribute bitset.
+  /// Any change to this encoding is a breaking change to bitcode compatibility.
+  static uint64_t encodeLLVMAttributesForBitcode(Attributes Attrs);
+
+  /// decodeLLVMAttributesForBitcode - This returns an attribute bitset
+  /// containing the LLVM attributes that have been decoded from the given
+  /// integer.  This function must stay in sync with
+  /// 'encodeLLVMAttributesForBitcode'.
+  static Attributes decodeLLVMAttributesForBitcode(LLVMContext &C,
+                                                   uint64_t EncodedAttrs);
+
+  /// getAsString - The set of Attributes set in Attributes is converted to a
+  /// string of equivalent mnemonics. This is, presumably, for writing out the
+  /// mnemonics for the assembly writer.
+  /// @brief Convert attribute bits to text
+  std::string getAsString() const;
 };
 
-namespace Attribute {
+//===----------------------------------------------------------------------===//
+/// AttrBuilder - This class is used in conjunction with the Attributes::get
+/// method to create an Attributes object. The object itself is uniquified. The
+/// Builder's value, however, is not. So this can be used as a quick way to test
+/// for equality, presence of attributes, etc.
+class AttrBuilder {
+  uint64_t Bits;
+public:
+  AttrBuilder() : Bits(0) {}
+  explicit AttrBuilder(uint64_t B) : Bits(B) {}
+  AttrBuilder(const Attributes &A) : Bits(A.Raw()) {}
+  AttrBuilder(const AttrBuilder &B) : Bits(B.Bits) {}
+
+  void clear() { Bits = 0; }
+
+  /// addAttribute - Add an attribute to the builder.
+  AttrBuilder &addAttribute(Attributes::AttrVal Val);
+
+  /// removeAttribute - Remove an attribute from the builder.
+  AttrBuilder &removeAttribute(Attributes::AttrVal Val);
+
+  /// addAttribute - Add the attributes from A to the builder.
+  AttrBuilder &addAttributes(const Attributes &A);
+
+  /// removeAttribute - Remove the attributes from A from the builder.
+  AttrBuilder &removeAttributes(const Attributes &A);
+
+  /// hasAttribute - Return true if the builder has the specified attribute.
+  bool hasAttribute(Attributes::AttrVal A) const;
+
+  /// hasAttributes - Return true if the builder has IR-level attributes.
+  bool hasAttributes() const;
+
+  /// hasAttributes - Return true if the builder has any attribute that's in the
+  /// specified attribute.
+  bool hasAttributes(const Attributes &A) const;
+
+  /// hasAlignmentAttr - Return true if the builder has an alignment attribute.
+  bool hasAlignmentAttr() const;
+
+  /// getAlignment - Retrieve the alignment attribute, if it exists.
+  uint64_t getAlignment() const;
+
+  /// getStackAlignment - Retrieve the stack alignment attribute, if it exists.
+  uint64_t getStackAlignment() const;
+
+  /// addAlignmentAttr - This turns an int alignment (which must be a power of
+  /// 2) into the form used internally in Attributes.
+  AttrBuilder &addAlignmentAttr(unsigned Align);
+
+  /// addStackAlignmentAttr - This turns an int stack alignment (which must be a
+  /// power of 2) into the form used internally in Attributes.
+  AttrBuilder &addStackAlignmentAttr(unsigned Align);
+
+  /// addRawValue - Add the raw value to the internal representation.
+  /// N.B. This should be used ONLY for decoding LLVM bitcode!
+  AttrBuilder &addRawValue(uint64_t Val);
+
+  /// @brief Remove attributes that are used on functions only.
+  void removeFunctionOnlyAttrs() {
+    removeAttribute(Attributes::NoReturn)
+      .removeAttribute(Attributes::NoUnwind)
+      .removeAttribute(Attributes::ReadNone)
+      .removeAttribute(Attributes::ReadOnly)
+      .removeAttribute(Attributes::NoInline)
+      .removeAttribute(Attributes::AlwaysInline)
+      .removeAttribute(Attributes::OptimizeForSize)
+      .removeAttribute(Attributes::StackProtect)
+      .removeAttribute(Attributes::StackProtectReq)
+      .removeAttribute(Attributes::NoRedZone)
+      .removeAttribute(Attributes::NoImplicitFloat)
+      .removeAttribute(Attributes::Naked)
+      .removeAttribute(Attributes::InlineHint)
+      .removeAttribute(Attributes::StackAlignment)
+      .removeAttribute(Attributes::UWTable)
+      .removeAttribute(Attributes::NonLazyBind)
+      .removeAttribute(Attributes::ReturnsTwice)
+      .removeAttribute(Attributes::AddressSafety)
+      .removeAttribute(Attributes::MinSize);
+  }
 
-/// Function parameters and results can have attributes to indicate how they
-/// should be treated by optimizations and code generation. This enumeration
-/// lists the attributes that can be associated with parameters, function
-/// results or the function itself.
-/// @brief Function attributes.
-
-// We declare AttrConst objects that will be used throughout the code
-// and also raw uint64_t objects with _i suffix to be used below for other
-// constant declarations. This is done to avoid static CTORs and at the same
-// time to keep type-safety of Attributes.
-#define DECLARE_LLVM_ATTRIBUTE(name, value) \
-  const uint64_t name##_i = value; \
-  const AttrConst name = {value};
-
-DECLARE_LLVM_ATTRIBUTE(None,0)    ///< No attributes have been set
-DECLARE_LLVM_ATTRIBUTE(ZExt,1<<0) ///< Zero extended before/after call
-DECLARE_LLVM_ATTRIBUTE(SExt,1<<1) ///< Sign extended before/after call
-DECLARE_LLVM_ATTRIBUTE(NoReturn,1<<2) ///< Mark the function as not returning
-DECLARE_LLVM_ATTRIBUTE(InReg,1<<3) ///< Force argument to be passed in register
-DECLARE_LLVM_ATTRIBUTE(StructRet,1<<4) ///< Hidden pointer to structure to return
-DECLARE_LLVM_ATTRIBUTE(NoUnwind,1<<5) ///< Function doesn't unwind stack
-DECLARE_LLVM_ATTRIBUTE(NoAlias,1<<6) ///< Considered to not alias after call
-DECLARE_LLVM_ATTRIBUTE(ByVal,1<<7) ///< Pass structure by value
-DECLARE_LLVM_ATTRIBUTE(Nest,1<<8) ///< Nested function static chain
-DECLARE_LLVM_ATTRIBUTE(ReadNone,1<<9) ///< Function does not access memory
-DECLARE_LLVM_ATTRIBUTE(ReadOnly,1<<10) ///< Function only reads from memory
-DECLARE_LLVM_ATTRIBUTE(NoInline,1<<11) ///< inline=never
-DECLARE_LLVM_ATTRIBUTE(AlwaysInline,1<<12) ///< inline=always
-DECLARE_LLVM_ATTRIBUTE(OptimizeForSize,1<<13) ///< opt_size
-DECLARE_LLVM_ATTRIBUTE(StackProtect,1<<14) ///< Stack protection.
-DECLARE_LLVM_ATTRIBUTE(StackProtectReq,1<<15) ///< Stack protection required.
-DECLARE_LLVM_ATTRIBUTE(Alignment,31<<16) ///< Alignment of parameter (5 bits)
-                                     // stored as log2 of alignment with +1 bias
-                                     // 0 means unaligned different from align 1
-DECLARE_LLVM_ATTRIBUTE(NoCapture,1<<21) ///< Function creates no aliases of pointer
-DECLARE_LLVM_ATTRIBUTE(NoRedZone,1<<22) /// disable redzone
-DECLARE_LLVM_ATTRIBUTE(NoImplicitFloat,1<<23) /// disable implicit floating point
-                                           /// instructions.
-DECLARE_LLVM_ATTRIBUTE(Naked,1<<24) ///< Naked function
-DECLARE_LLVM_ATTRIBUTE(InlineHint,1<<25) ///< source said inlining was
-                                           ///desirable
-DECLARE_LLVM_ATTRIBUTE(StackAlignment,7<<26) ///< Alignment of stack for
-                                           ///function (3 bits) stored as log2
-                                           ///of alignment with +1 bias
-                                           ///0 means unaligned (different from
-                                           ///alignstack= {1))
-DECLARE_LLVM_ATTRIBUTE(ReturnsTwice,1<<29) ///< Function can return twice
-DECLARE_LLVM_ATTRIBUTE(UWTable,1<<30) ///< Function must be in a unwind
-                                           ///table
-DECLARE_LLVM_ATTRIBUTE(NonLazyBind,1U<<31) ///< Function is called early and/or
-                                            /// often, so lazy binding isn't
-                                            /// worthwhile.
-DECLARE_LLVM_ATTRIBUTE(AddressSafety,1ULL<<32) ///< Address safety checking is on.
-DECLARE_LLVM_ATTRIBUTE(IANSDialect,1ULL<<33) ///< Inline asm non-standard dialect.
-                                           /// When not set, ATT dialect assumed.
-                                           /// When set implies the Intel dialect.
-
-#undef DECLARE_LLVM_ATTRIBUTE
-
-/// Note that uwtable is about the ABI or the user mandating an entry in the
-/// unwind table. The nounwind attribute is about an exception passing by the
-/// function.
-/// In a theoretical system that uses tables for profiling and sjlj for
-/// exceptions, they would be fully independent. In a normal system that
-/// uses tables for both, the semantics are:
-/// nil                = Needs an entry because an exception might pass by.
-/// nounwind           = No need for an entry
-/// uwtable            = Needs an entry because the ABI says so and because
-///                      an exception might pass by.
-/// uwtable + nounwind = Needs an entry because the ABI says so.
-
-/// @brief Attributes that only apply to function parameters.
-const AttrConst ParameterOnly = {ByVal_i | Nest_i |
-    StructRet_i | NoCapture_i};
-
-/// @brief Attributes that may be applied to the function itself.  These cannot
-/// be used on return values or function parameters.
-const AttrConst FunctionOnly = {NoReturn_i | NoUnwind_i | ReadNone_i |
-  ReadOnly_i | NoInline_i | AlwaysInline_i | OptimizeForSize_i |
-  StackProtect_i | StackProtectReq_i | NoRedZone_i | NoImplicitFloat_i |
-  Naked_i | InlineHint_i | StackAlignment_i |
-  UWTable_i | NonLazyBind_i | ReturnsTwice_i | AddressSafety_i |
-  IANSDialect_i};
-
-/// @brief Parameter attributes that do not apply to vararg call arguments.
-const AttrConst VarArgsIncompatible = {StructRet_i};
-
-/// @brief Attributes that are mutually incompatible.
-const AttrConst MutuallyIncompatible[5] = {
-  {ByVal_i | Nest_i | StructRet_i},
-  {ByVal_i | Nest_i | InReg_i },
-  {ZExt_i  | SExt_i},
-  {ReadNone_i | ReadOnly_i},
-  {NoInline_i | AlwaysInline_i}
-};
+  uint64_t Raw() const { return Bits; }
 
-/// @brief Which attributes cannot be applied to a type.
-Attributes typeIncompatible(Type *Ty);
+  bool operator==(const AttrBuilder &B) {
+    return Bits == B.Bits;
+  }
+  bool operator!=(const AttrBuilder &B) {
+    return Bits != B.Bits;
+  }
+};
 
-/// This turns an int alignment (a power of 2, normally) into the
-/// form used internally in Attributes.
-inline Attributes constructAlignmentFromInt(unsigned i) {
-  // Default alignment, allow the target to define how to align it.
-  if (i == 0)
-    return None;
-
-  assert(isPowerOf2_32(i) && "Alignment must be a power of two.");
-  assert(i <= 0x40000000 && "Alignment too large.");
-  return Attributes((Log2_32(i)+1) << 16);
-}
-
-/// This returns the alignment field of an attribute as a byte alignment value.
-inline unsigned getAlignmentFromAttrs(Attributes A) {
-  Attributes Align = A & Attribute::Alignment;
-  if (!Align)
-    return 0;
-
-  return 1U << ((Align.Raw() >> 16) - 1);
-}
-
-/// This turns an int stack alignment (which must be a power of 2) into
-/// the form used internally in Attributes.
-inline Attributes constructStackAlignmentFromInt(unsigned i) {
-  // Default alignment, allow the target to define how to align it.
-  if (i == 0)
-    return None;
-
-  assert(isPowerOf2_32(i) && "Alignment must be a power of two.");
-  assert(i <= 0x100 && "Alignment too large.");
-  return Attributes((Log2_32(i)+1) << 26);
-}
-
-/// This returns the stack alignment field of an attribute as a byte alignment
-/// value.
-inline unsigned getStackAlignmentFromAttrs(Attributes A) {
-  Attributes StackAlign = A & Attribute::StackAlignment;
-  if (!StackAlign)
-    return 0;
-
-  return 1U << ((StackAlign.Raw() >> 26) - 1);
-}
-
-/// This returns an integer containing an encoding of all the
-/// LLVM attributes found in the given attribute bitset.  Any
-/// change to this encoding is a breaking change to bitcode
-/// compatibility.
-inline uint64_t encodeLLVMAttributesForBitcode(Attributes Attrs) {
-  // FIXME: It doesn't make sense to store the alignment information as an
-  // expanded out value, we should store it as a log2 value.  However, we can't
-  // just change that here without breaking bitcode compatibility.  If this ever
-  // becomes a problem in practice, we should introduce new tag numbers in the
-  // bitcode file and have those tags use a more efficiently encoded alignment
-  // field.
-
-  // Store the alignment in the bitcode as a 16-bit raw value instead of a
-  // 5-bit log2 encoded value. Shift the bits above the alignment up by
-  // 11 bits.
-
-  uint64_t EncodedAttrs = Attrs.Raw() & 0xffff;
-  if (Attrs & Attribute::Alignment)
-    EncodedAttrs |= (1ull << 16) <<
-      (((Attrs & Attribute::Alignment).Raw()-1) >> 16);
-  EncodedAttrs |= (Attrs.Raw() & (0xfffull << 21)) << 11;
-
-  return EncodedAttrs;
-}
-
-/// This returns an attribute bitset containing the LLVM attributes
-/// that have been decoded from the given integer.  This function
-/// must stay in sync with 'encodeLLVMAttributesForBitcode'.
-inline Attributes decodeLLVMAttributesForBitcode(uint64_t EncodedAttrs) {
-  // The alignment is stored as a 16-bit raw value from bits 31--16.
-  // We shift the bits above 31 down by 11 bits.
-
-  unsigned Alignment = (EncodedAttrs & (0xffffull << 16)) >> 16;
-  assert((!Alignment || isPowerOf2_32(Alignment)) &&
-         "Alignment must be a power of two.");
-
-  Attributes Attrs(EncodedAttrs & 0xffff);
-  if (Alignment)
-    Attrs |= Attribute::constructAlignmentFromInt(Alignment);
-  Attrs |= Attributes((EncodedAttrs & (0xfffull << 32)) >> 11);
-
-  return Attrs;
-}
-
-
-/// The set of Attributes set in Attributes is converted to a
-/// string of equivalent mnemonics. This is, presumably, for writing out
-/// the mnemonics for the assembly writer.
-/// @brief Convert attribute bits to text
-std::string getAsString(Attributes Attrs);
-} // end namespace Attribute
+//===----------------------------------------------------------------------===//
+// AttributeWithIndex
+//===----------------------------------------------------------------------===//
 
-/// This is just a pair of values to associate a set of attributes
-/// with an index.
+/// AttributeWithIndex - This is just a pair of values to associate a set of
+/// attributes with an index.
 struct AttributeWithIndex {
-  Attributes Attrs; ///< The attributes that are set, or'd together.
-  unsigned Index; ///< Index of the parameter for which the attributes apply.
-                  ///< Index 0 is used for return value attributes.
-                  ///< Index ~0U is used for function attributes.
-
+  Attributes Attrs;  ///< The attributes that are set, or'd together.
+  unsigned Index;    ///< Index of the parameter for which the attributes apply.
+                     ///< Index 0 is used for return value attributes.
+                     ///< Index ~0U is used for function attributes.
+
+  static AttributeWithIndex get(LLVMContext &C, unsigned Idx,
+                                ArrayRef<Attributes::AttrVal> Attrs) {
+    return get(Idx, Attributes::get(C, Attrs));
+  }
   static AttributeWithIndex get(unsigned Idx, Attributes Attrs) {
     AttributeWithIndex P;
     P.Index = Idx;
@@ -300,31 +312,42 @@
 /// AttrListPtr - This class manages the ref count for the opaque
 /// AttributeListImpl object and provides accessors for it.
 class AttrListPtr {
-  /// AttrList - The attributes that we are managing.  This can be null
-  /// to represent the empty attributes list.
+public:
+  enum AttrIndex {
+    ReturnIndex = 0U,
+    FunctionIndex = ~0U
+  };
+private:
+  /// @brief The attributes that we are managing.  This can be null to represent
+  /// the empty attributes list.
   AttributeListImpl *AttrList;
+
+  /// @brief The attributes for the specified index are returned.  Attributes
+  /// for the result are denoted with Idx = 0.
+  Attributes getAttributes(unsigned Idx) const;
+
+  explicit AttrListPtr(AttributeListImpl *LI) : AttrList(LI) {}
 public:
   AttrListPtr() : AttrList(0) {}
-  AttrListPtr(const AttrListPtr &P);
+  AttrListPtr(const AttrListPtr &P) : AttrList(P.AttrList) {}
   const AttrListPtr &operator=(const AttrListPtr &RHS);
-  ~AttrListPtr();
 
   //===--------------------------------------------------------------------===//
   // Attribute List Construction and Mutation
   //===--------------------------------------------------------------------===//
 
   /// get - Return a Attributes list with the specified parameters in it.
-  static AttrListPtr get(ArrayRef<AttributeWithIndex> Attrs);
+  static AttrListPtr get(LLVMContext &C, ArrayRef<AttributeWithIndex> Attrs);
 
   /// addAttr - Add the specified attribute at the specified index to this
   /// attribute list.  Since attribute lists are immutable, this
   /// returns the new list.
-  AttrListPtr addAttr(unsigned Idx, Attributes Attrs) const;
+  AttrListPtr addAttr(LLVMContext &C, unsigned Idx, Attributes Attrs) const;
 
   /// removeAttr - Remove the specified attribute at the specified index from
   /// this attribute list.  Since attribute lists are immutable, this
   /// returns the new list.
-  AttrListPtr removeAttr(unsigned Idx, Attributes Attrs) const;
+  AttrListPtr removeAttr(LLVMContext &C, unsigned Idx, Attributes Attrs) const;
 
   //===--------------------------------------------------------------------===//
   // Attribute List Accessors
@@ -332,36 +355,38 @@
   /// getParamAttributes - The attributes for the specified index are
   /// returned.
   Attributes getParamAttributes(unsigned Idx) const {
-    assert (Idx && Idx != ~0U && "Invalid parameter index!");
     return getAttributes(Idx);
   }
 
   /// getRetAttributes - The attributes for the ret value are
   /// returned.
   Attributes getRetAttributes() const {
-    return getAttributes(0);
+    return getAttributes(ReturnIndex);
   }
 
   /// getFnAttributes - The function attributes are returned.
   Attributes getFnAttributes() const {
-    return getAttributes(~0U);
+    return getAttributes(FunctionIndex);
   }
 
   /// paramHasAttr - Return true if the specified parameter index has the
   /// specified attribute set.
   bool paramHasAttr(unsigned Idx, Attributes Attr) const {
-    return getAttributes(Idx) & Attr;
+    return getAttributes(Idx).hasAttributes(Attr);
   }
 
   /// getParamAlignment - Return the alignment for the specified function
   /// parameter.
   unsigned getParamAlignment(unsigned Idx) const {
-    return Attribute::getAlignmentFromAttrs(getAttributes(Idx));
+    return getAttributes(Idx).getAlignment();
   }
 
   /// hasAttrSomewhere - Return true if the specified attribute is set for at
   /// least one parameter or for the return value.
-  bool hasAttrSomewhere(Attributes Attr) const;
+  bool hasAttrSomewhere(Attributes::AttrVal Attr) const;
+
+  unsigned getNumAttrs() const;
+  Attributes &getAttributesAtIndex(unsigned i) const;
 
   /// operator==/!= - Provide equality predicates.
   bool operator==(const AttrListPtr &RHS) const
@@ -369,8 +394,6 @@
   bool operator!=(const AttrListPtr &RHS) const
   { return AttrList != RHS.AttrList; }
 
-  void dump() const;
-
   //===--------------------------------------------------------------------===//
   // Attribute List Introspection
   //===--------------------------------------------------------------------===//
@@ -400,13 +423,7 @@
   /// holds a index number plus a set of attributes.
   const AttributeWithIndex &getSlot(unsigned Slot) const;
 
-private:
-  explicit AttrListPtr(AttributeListImpl *L);
-
-  /// getAttributes - The attributes for the specified index are
-  /// returned.  Attributes for the result are denoted with Idx = 0.
-  Attributes getAttributes(unsigned Idx) const;
-
+  void dump() const;
 };
 
 } // End llvm namespace

Modified: llvm/branches/AMDILBackend/include/llvm/BasicBlock.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/BasicBlock.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/BasicBlock.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/BasicBlock.h Tue Jan 15 11:16:16 2013
@@ -79,8 +79,8 @@
   void setParent(Function *parent);
   friend class SymbolTableListTraits<BasicBlock, Function>;
 
-  BasicBlock(const BasicBlock &);     // Do not implement
-  void operator=(const BasicBlock &); // Do not implement
+  BasicBlock(const BasicBlock &) LLVM_DELETED_FUNCTION;
+  void operator=(const BasicBlock &) LLVM_DELETED_FUNCTION;
 
   /// BasicBlock ctor - If the function parameter is specified, the basic block
   /// is automatically inserted at either the end of the function (if
@@ -213,7 +213,6 @@
   ValueSymbolTable *getValueSymbolTable();
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const BasicBlock *) { return true; }
   static inline bool classof(const Value *V) {
     return V->getValueID() == Value::BasicBlockVal;
   }

Modified: llvm/branches/AMDILBackend/include/llvm/Bitcode/Archive.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Bitcode/Archive.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Bitcode/Archive.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Bitcode/Archive.h Tue Jan 15 11:16:16 2013
@@ -415,8 +415,8 @@
     /// name will be truncated at 15 characters. If \p Compress is specified,
     /// all archive members will be compressed before being written. If
     /// \p PrintSymTab is true, the symbol table will be printed to std::cout.
-    /// @returns true if an error occurred, \p error set to error message
-    /// @returns false if the writing succeeded.
+    /// @returns true if an error occurred, \p error set to error message;
+    /// returns false if the writing succeeded.
     /// @brief Write (possibly modified) archive contents to disk
     bool writeToDisk(
       bool CreateSymbolTable=false,   ///< Create Symbol table
@@ -480,8 +480,8 @@
     /// Writes one ArchiveMember to an ofstream. If an error occurs, returns
     /// false, otherwise true. If an error occurs and error is non-null then
     /// it will be set to an error message.
-    /// @returns false Writing member succeeded
-    /// @returns true Writing member failed, \p error set to error message
+    /// @returns false if writing member succeeded,
+    /// returns true if writing member failed, \p error set to error message.
     bool writeMember(
       const ArchiveMember& member, ///< The member to be written
       std::ofstream& ARFile,       ///< The file to write member onto
@@ -527,9 +527,9 @@
   /// @name Hidden
   /// @{
   private:
-    Archive();                          ///< Do not implement
-    Archive(const Archive&);            ///< Do not implement
-    Archive& operator=(const Archive&); ///< Do not implement
+    Archive() LLVM_DELETED_FUNCTION;
+    Archive(const Archive&) LLVM_DELETED_FUNCTION;
+    Archive& operator=(const Archive&) LLVM_DELETED_FUNCTION;
   /// @}
 };
 

Modified: llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamReader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamReader.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamReader.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamReader.h Tue Jan 15 11:16:16 2013
@@ -47,9 +47,9 @@
   /// block/record name information in the BlockInfo block. Only llvm-bcanalyzer
   /// uses this.
   bool IgnoreBlockInfoNames;
-  
-  BitstreamReader(const BitstreamReader&);  // DO NOT IMPLEMENT
-  void operator=(const BitstreamReader&);  // DO NOT IMPLEMENT
+
+  BitstreamReader(const BitstreamReader&) LLVM_DELETED_FUNCTION;
+  void operator=(const BitstreamReader&) LLVM_DELETED_FUNCTION;
 public:
   BitstreamReader() : IgnoreBlockInfoNames(true) {
   }
@@ -409,7 +409,7 @@
   }
 
   /// EnterSubBlock - Having read the ENTER_SUBBLOCK abbrevid, enter
-  /// the block, and return true if the block is valid.
+  /// the block, and return true if the block has an error.
   bool EnterSubBlock(unsigned BlockID, unsigned *NumWordsP = 0) {
     // Save the current block's state on BlockScope.
     BlockScope.push_back(Block(CurCodeSize));

Modified: llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamWriter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamWriter.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamWriter.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Bitcode/BitstreamWriter.h Tue Jan 15 11:16:16 2013
@@ -155,6 +155,7 @@
   }
 
   void EmitVBR(uint32_t Val, unsigned NumBits) {
+    assert(NumBits <= 32 && "Too many bits to emit!");
     uint32_t Threshold = 1U << (NumBits-1);
 
     // Emit the bits with VBR encoding, NumBits-1 bits at a time.
@@ -167,10 +168,11 @@
   }
 
   void EmitVBR64(uint64_t Val, unsigned NumBits) {
+    assert(NumBits <= 32 && "Too many bits to emit!");
     if ((uint32_t)Val == Val)
       return EmitVBR((uint32_t)Val, NumBits);
 
-    uint64_t Threshold = 1U << (NumBits-1);
+    uint32_t Threshold = 1U << (NumBits-1);
 
     // Emit the bits with VBR encoding, NumBits-1 bits at a time.
     while (Val >= Threshold) {

Modified: llvm/branches/AMDILBackend/include/llvm/Bitcode/LLVMBitCodes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Bitcode/LLVMBitCodes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Bitcode/LLVMBitCodes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Bitcode/LLVMBitCodes.h Tue Jan 15 11:16:16 2013
@@ -161,11 +161,14 @@
     CST_CODE_CE_INSERTELT  = 15,  // CE_INSERTELT:  [opval, opval, opval]
     CST_CODE_CE_SHUFFLEVEC = 16,  // CE_SHUFFLEVEC: [opval, opval, opval]
     CST_CODE_CE_CMP        = 17,  // CE_CMP:        [opty, opval, opval, pred]
-    CST_CODE_INLINEASM     = 18,  // INLINEASM:     [sideeffect,asmstr,conststr]
+    CST_CODE_INLINEASM_OLD = 18,  // INLINEASM:     [sideeffect|alignstack,
+                                  //                 asmstr,conststr]
     CST_CODE_CE_SHUFVEC_EX = 19,  // SHUFVEC_EX:    [opty, opval, opval, opval]
     CST_CODE_CE_INBOUNDS_GEP = 20,// INBOUNDS_GEP:  [n x operands]
     CST_CODE_BLOCKADDRESS  = 21,  // CST_CODE_BLOCKADDRESS [fnty, fnval, bb#]
-    CST_CODE_DATA          = 22   // DATA:          [n x elements]
+    CST_CODE_DATA          = 22,  // DATA:          [n x elements]
+    CST_CODE_INLINEASM     = 23   // INLINEASM:     [sideeffect|alignstack|
+                                  //                 asmdialect,asmstr,conststr]
   };
 
   /// CastOpcodes - These are values used in the bitcode files to encode which

Modified: llvm/branches/AMDILBackend/include/llvm/CallingConv.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CallingConv.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CallingConv.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CallingConv.h Tue Jan 15 11:16:16 2013
@@ -94,7 +94,29 @@
 
     /// MBLAZE_INTR - Calling convention used for MBlaze interrupt support
     /// routines (i.e. GCC's save_volatiles attribute).
-    MBLAZE_SVOL = 74
+    MBLAZE_SVOL = 74,
+
+    /// SPIR_FUNC - Calling convention for SPIR non-kernel device functions.
+    /// No lowering or expansion of arguments.
+    /// Structures are passed as a pointer to a struct with the byval attribute.
+    /// Functions can only call SPIR_FUNC and SPIR_KERNEL functions.
+    /// Functions can only have zero or one return values.
+    /// Variable arguments are not allowed, except for printf.
+    /// How arguments/return values are lowered are not specified.
+    /// Functions are only visible to the devices.
+    SPIR_FUNC = 75,
+
+    /// SPIR_KERNEL - Calling convention for SPIR kernel functions.
+    /// Inherits the restrictions of SPIR_FUNC, except
+    /// Cannot have non-void return values.
+    /// Cannot have variable arguments.
+    /// Can also be called by the host.
+    /// Is externally visible.
+    SPIR_KERNEL = 76,
+
+    /// Intel_OCL_BI - Calling conventions for Intel OpenCL built-ins
+    Intel_OCL_BI = 77
+
   };
 } // End CallingConv namespace
 

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/AsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/AsmPrinter.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/AsmPrinter.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/AsmPrinter.h Tue Jan 15 11:16:16 2013
@@ -17,6 +17,7 @@
 #define LLVM_CODEGEN_ASMPRINTER_H
 
 #include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/InlineAsm.h"
 #include "llvm/Support/DataTypes.h"
 #include "llvm/Support/ErrorHandling.h"
 
@@ -47,7 +48,7 @@
   class DwarfException;
   class Mangler;
   class TargetLoweringObjectFile;
-  class TargetData;
+  class DataLayout;
   class TargetMachine;
 
   /// AsmPrinter - This class is intended to be used as a driving class for all
@@ -130,8 +131,8 @@
     /// getObjFileLowering - Return information about object file lowering.
     const TargetLoweringObjectFile &getObjFileLowering() const;
 
-    /// getTargetData - Return information about data layout.
-    const TargetData &getTargetData() const;
+    /// getDataLayout - Return information about data layout.
+    const DataLayout &getDataLayout() const;
 
     /// getCurrentSection() - Return the current section we are emitting to.
     const MCSection *getCurrentSection() const;
@@ -460,7 +461,8 @@
     mutable unsigned SetCounter;
 
     /// EmitInlineAsm - Emit a blob of inline asm to the output streamer.
-    void EmitInlineAsm(StringRef Str, const MDNode *LocMDNode = 0) const;
+    void EmitInlineAsm(StringRef Str, const MDNode *LocMDNode = 0,
+                    InlineAsm::AsmDialect AsmDialect = InlineAsm::AD_ATT) const;
 
     /// EmitInlineAsm - This method formats and emits the specified machine
     /// instruction that is an inline asm.

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/CallingConvLower.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/CallingConvLower.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/CallingConvLower.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/CallingConvLower.h Tue Jan 15 11:16:16 2013
@@ -17,6 +17,7 @@
 
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineFrameInfo.h"
 #include "llvm/CodeGen/ValueTypes.h"
 #include "llvm/Target/TargetCallingConv.h"
 #include "llvm/CallingConv.h"
@@ -288,6 +289,7 @@
     StackOffset = ((StackOffset + Align-1) & ~(Align-1));
     unsigned Result = StackOffset;
     StackOffset += Size;
+    MF.getFrameInfo()->ensureMaxAlignment(Align);
     return Result;
   }
 

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/FastISel.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/FastISel.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/FastISel.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/FastISel.h Tue Jan 15 11:16:16 2013
@@ -32,7 +32,7 @@
 class MachineInstr;
 class MachineFrameInfo;
 class MachineRegisterInfo;
-class TargetData;
+class DataLayout;
 class TargetInstrInfo;
 class TargetLibraryInfo;
 class TargetLowering;
@@ -54,7 +54,7 @@
   MachineConstantPool &MCP;
   DebugLoc DL;
   const TargetMachine &TM;
-  const TargetData &TD;
+  const DataLayout &TD;
   const TargetInstrInfo &TII;
   const TargetLowering &TLI;
   const TargetRegisterInfo &TRI;

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadata.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadata.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadata.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadata.h Tue Jan 15 11:16:16 2013
@@ -122,6 +122,11 @@
       Roots.push_back(GCRoot(Num, Metadata));
     }
 
+    /// removeStackRoot - Removes a root.
+    roots_iterator removeStackRoot(roots_iterator position) {
+      return Roots.erase(position);
+    }
+
     /// addSafePoint - Notes the existence of a safe point. Num is the ID of the
     /// label just prior to the safe point (if the code generator is using
     /// MachineModuleInfo).

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadataPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadataPrinter.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadataPrinter.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/GCMetadataPrinter.h Tue Jan 15 11:16:16 2013
@@ -48,9 +48,10 @@
     // May only be subclassed.
     GCMetadataPrinter();
 
-    // Do not implement.
-    GCMetadataPrinter(const GCMetadataPrinter &);
-    GCMetadataPrinter &operator=(const GCMetadataPrinter &);
+  private:
+    GCMetadataPrinter(const GCMetadataPrinter &) LLVM_DELETED_FUNCTION;
+    GCMetadataPrinter &
+      operator=(const GCMetadataPrinter &) LLVM_DELETED_FUNCTION;
 
   public:
     GCStrategy &getStrategy() { return *S; }

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/ISDOpcodes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/ISDOpcodes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/ISDOpcodes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/ISDOpcodes.h Tue Jan 15 11:16:16 2013
@@ -637,6 +637,10 @@
     ATOMIC_LOAD_UMIN,
     ATOMIC_LOAD_UMAX,
 
+    /// This corresponds to the llvm.lifetime.* intrinsics. The first operand
+    /// is the chain and the second operand is the alloca pointer.
+    LIFETIME_START, LIFETIME_END,
+
     /// BUILTIN_OP_END - This must be the last enum value in this list.
     /// The target-specific pre-isel opcode values start here.
     BUILTIN_OP_END

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/IntrinsicLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/IntrinsicLowering.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/IntrinsicLowering.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/IntrinsicLowering.h Tue Jan 15 11:16:16 2013
@@ -21,15 +21,15 @@
 namespace llvm {
   class CallInst;
   class Module;
-  class TargetData;
+  class DataLayout;
 
   class IntrinsicLowering {
-    const TargetData& TD;
+    const DataLayout& TD;
 
     
     bool Warned;
   public:
-    explicit IntrinsicLowering(const TargetData &td) :
+    explicit IntrinsicLowering(const DataLayout &td) :
       TD(td), Warned(false) {}
 
     /// AddPrototypes - This method, if called, causes all of the prototypes

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveInterval.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveInterval.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveInterval.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveInterval.h Tue Jan 15 11:16:16 2013
@@ -29,6 +29,7 @@
 #include <climits>
 
 namespace llvm {
+  class CoalescerPair;
   class LiveIntervals;
   class MachineInstr;
   class MachineRegisterInfo;
@@ -113,9 +114,6 @@
 
     void dump() const;
     void print(raw_ostream &os) const;
-
-  private:
-    LiveRange(); // DO NOT IMPLEMENT
   };
 
   template <> struct isPodLike<LiveRange> { static const bool value = true; };
@@ -275,11 +273,6 @@
     void MergeValueInAsValue(const LiveInterval &RHS,
                              const VNInfo *RHSValNo, VNInfo *LHSValNo);
 
-    /// Copy - Copy the specified live interval. This copies all the fields
-    /// except for the register of the interval.
-    void Copy(const LiveInterval &RHS, MachineRegisterInfo *MRI,
-              VNInfo::Allocator &VNInfoAllocator);
-
     bool empty() const { return ranges.empty(); }
 
     /// beginIndex - Return the lowest numbered slot covered by interval.
@@ -312,12 +305,6 @@
       return r != end() && r->end == index;
     }
 
-    /// killedInRange - Return true if the interval has kills in [Start,End).
-    /// Note that the kill point is considered the end of a live range, so it is
-    /// not contained in the live range. If a live range ends at End, it won't
-    /// be counted as a kill by this method.
-    bool killedInRange(SlotIndex Start, SlotIndex End) const;
-
     /// getLiveRangeContaining - Return the live range that contains the
     /// specified index, or null if there is none.
     const LiveRange *getLiveRangeContaining(SlotIndex Idx) const {
@@ -366,6 +353,14 @@
       return overlapsFrom(other, other.begin());
     }
 
+    /// overlaps - Return true if the two intervals have overlapping segments
+    /// that are not coalescable according to CP.
+    ///
+    /// Overlapping segments where one interval is defined by a coalescable
+    /// copy are allowed.
+    bool overlaps(const LiveInterval &Other, const CoalescerPair &CP,
+                  const SlotIndexes&) const;
+
     /// overlaps - Return true if the live interval overlaps a range specified
     /// by [Start, End).
     bool overlaps(SlotIndex Start, SlotIndex End) const;
@@ -469,7 +464,7 @@
                              VNInfo *LHSValNo = 0,
                              const VNInfo *RHSValNo = 0);
 
-    LiveInterval& operator=(const LiveInterval& rhs); // DO NOT IMPLEMENT
+    LiveInterval& operator=(const LiveInterval& rhs) LLVM_DELETED_FUNCTION;
 
   };
 
@@ -501,7 +496,9 @@
       if (I == E)
         return;
       // Is this an instruction live-in segment?
-      if (SlotIndex::isEarlierInstr(I->start, Idx)) {
+      // If Idx is the start index of a basic block, include live-in segments
+      // that start at Idx.getBaseIndex().
+      if (I->start <= Idx.getBaseIndex()) {
         EarlyVal = I->valno;
         EndPoint = I->end;
         // Move to the potentially live-out segment.
@@ -510,6 +507,12 @@
           if (++I == E)
             return;
         }
+        // Special case: A PHIDef value can have its def in the middle of a
+        // segment if the value happens to be live out of the layout
+        // predecessor.
+        // Such a value is not live-in.
+        if (EarlyVal->def == Idx.getBaseIndex())
+          EarlyVal = 0;
       }
       // I now points to the segment that may be live-through, or defined by
       // this instr. Ignore segments starting after the current instr.

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveIntervalAnalysis.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveIntervalAnalysis.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveIntervalAnalysis.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveIntervalAnalysis.h Tue Jan 15 11:16:16 2013
@@ -65,12 +65,6 @@
     /// Live interval pointers for all the virtual registers.
     IndexedMap<LiveInterval*, VirtReg2IndexFunctor> VirtRegIntervals;
 
-    /// AllocatableRegs - A bit vector of allocatable registers.
-    BitVector AllocatableRegs;
-
-    /// ReservedRegs - A bit vector of reserved registers.
-    BitVector ReservedRegs;
-
     /// RegMaskSlots - Sorted list of instructions with register mask operands.
     /// Always use the 'r' slot, RegMasks are normal clobbers, not early
     /// clobbers.
@@ -123,18 +117,6 @@
       return VirtRegIntervals.inBounds(Reg) && VirtRegIntervals[Reg];
     }
 
-    /// isAllocatable - is the physical register reg allocatable in the current
-    /// function?
-    bool isAllocatable(unsigned reg) const {
-      return AllocatableRegs.test(reg);
-    }
-
-    /// isReserved - is the physical register reg reserved in the current
-    /// function
-    bool isReserved(unsigned reg) const {
-      return ReservedRegs.test(reg);
-    }
-
     // Interval creation.
     LiveInterval &getOrCreateInterval(unsigned Reg) {
       if (!hasInterval(Reg)) {
@@ -165,6 +147,26 @@
     bool shrinkToUses(LiveInterval *li,
                       SmallVectorImpl<MachineInstr*> *dead = 0);
 
+    /// extendToIndices - Extend the live range of LI to reach all points in
+    /// Indices. The points in the Indices array must be jointly dominated by
+    /// existing defs in LI. PHI-defs are added as needed to maintain SSA form.
+    ///
+    /// If a SlotIndex in Indices is the end index of a basic block, LI will be
+    /// extended to be live out of the basic block.
+    ///
+    /// See also LiveRangeCalc::extend().
+    void extendToIndices(LiveInterval *LI, ArrayRef<SlotIndex> Indices);
+
+    /// pruneValue - If an LI value is live at Kill, prune its live range by
+    /// removing any liveness reachable from Kill. Add live range end points to
+    /// EndPoints such that extendToIndices(LI, EndPoints) will reconstruct the
+    /// value's live range.
+    ///
+    /// Calling pruneValue() and extendToIndices() can be used to reconstruct
+    /// SSA form after adding defs to a virtual register.
+    void pruneValue(LiveInterval *LI, SlotIndex Kill,
+                    SmallVectorImpl<SlotIndex> *EndPoints);
+
     SlotIndexes *getSlotIndexes() const {
       return Indexes;
     }
@@ -252,21 +254,26 @@
 
     /// addKillFlags - Add kill flags to any instruction that kills a virtual
     /// register.
-    void addKillFlags();
+    void addKillFlags(const VirtRegMap*);
 
     /// handleMove - call this method to notify LiveIntervals that
     /// instruction 'mi' has been moved within a basic block. This will update
     /// the live intervals for all operands of mi. Moves between basic blocks
     /// are not supported.
-    void handleMove(MachineInstr* MI);
+    ///
+    /// \param UpdateFlags Update live intervals for nonallocatable physregs.
+    void handleMove(MachineInstr* MI, bool UpdateFlags = false);
 
     /// moveIntoBundle - Update intervals for operands of MI so that they
     /// begin/end on the SlotIndex for BundleStart.
     ///
+    /// \param UpdateFlags Update live intervals for nonallocatable physregs.
+    ///
     /// Requires MI and BundleStart to have SlotIndexes, and assumes
     /// existing liveness is accurate. BundleStart should be the first
     /// instruction in the Bundle.
-    void handleMoveIntoBundle(MachineInstr* MI, MachineInstr* BundleStart);
+    void handleMoveIntoBundle(MachineInstr* MI, MachineInstr* BundleStart,
+                              bool UpdateFlags = false);
 
     // Register mask functions.
     //

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveVariables.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveVariables.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveVariables.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/LiveVariables.h Tue Jan 15 11:16:16 2013
@@ -126,12 +126,6 @@
   /// building live intervals.
   SparseBitVector<> PHIJoins;
 
-  /// ReservedRegisters - This vector keeps track of which registers
-  /// are reserved register which are not allocatable by the target machine.
-  /// We can not track liveness for values that are in this set.
-  ///
-  BitVector ReservedRegisters;
-
 private:   // Intermediate data structures
   MachineFunction *MF;
 

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBasicBlock.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBasicBlock.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBasicBlock.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBasicBlock.h Tue Jan 15 11:16:16 2013
@@ -351,6 +351,8 @@
   /// parameter is stored in Weights list and it may be used by
   /// MachineBranchProbabilityInfo analysis to calculate branch probability.
   ///
+  /// Note that duplicate Machine CFG edges are not allowed.
+  ///
   void addSuccessor(MachineBasicBlock *succ, uint32_t weight = 0);
 
   /// removeSuccessor - Remove successor from the successors list of this
@@ -545,6 +547,28 @@
     return findDebugLoc(MBBI.getInstrIterator());
   }
 
+  /// Possible outcome of a register liveness query to computeRegisterLiveness()
+  enum LivenessQueryResult {
+    LQR_Live,            ///< Register is known to be live.
+    LQR_OverlappingLive, ///< Register itself is not live, but some overlapping
+                         ///< register is.
+    LQR_Dead,            ///< Register is known to be dead.
+    LQR_Unknown          ///< Register liveness not decidable from local
+                         ///< neighborhood.
+  };
+
+  /// computeRegisterLiveness - Return whether (physical) register \c Reg
+  /// has been <def>ined and not <kill>ed as of just before \c MI.
+  /// 
+  /// Search is localised to a neighborhood of
+  /// \c Neighborhood instructions before (searching for defs or kills) and
+  /// Neighborhood instructions after (searching just for defs) MI.
+  ///
+  /// \c Reg must be a physical register.
+  LivenessQueryResult computeRegisterLiveness(const TargetRegisterInfo *TRI,
+                                              unsigned Reg, MachineInstr *MI,
+                                              unsigned Neighborhood=10);
+
   // Debugging methods.
   void dump() const;
   void print(raw_ostream &OS, SlotIndexes* = 0) const;
@@ -572,7 +596,7 @@
   /// getSuccWeight - Return weight of the edge from this block to MBB. This
   /// method should NOT be called directly, but by using getEdgeWeight method
   /// from MachineBranchProbabilityInfo class.
-  uint32_t getSuccWeight(const MachineBasicBlock *succ) const;
+  uint32_t getSuccWeight(const_succ_iterator Succ) const;
 
 
   // Methods used to maintain doubly linked list of blocks...

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBranchProbabilityInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBranchProbabilityInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineBranchProbabilityInfo.h Tue Jan 15 11:16:16 2013
@@ -16,14 +16,12 @@
 #define LLVM_CODEGEN_MACHINEBRANCHPROBABILITYINFO_H
 
 #include "llvm/Pass.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
 #include "llvm/Support/BranchProbability.h"
 #include <climits>
 
 namespace llvm {
 
-class raw_ostream;
-class MachineBasicBlock;
-
 class MachineBranchProbabilityInfo : public ImmutablePass {
   virtual void anchor();
 
@@ -52,6 +50,11 @@
   uint32_t getEdgeWeight(const MachineBasicBlock *Src,
                          const MachineBasicBlock *Dst) const;
 
+  // Same thing, but using a const_succ_iterator from Src. This is faster when
+  // the iterator is already available.
+  uint32_t getEdgeWeight(const MachineBasicBlock *Src,
+                         MachineBasicBlock::const_succ_iterator Dst) const;
+
   // Get sum of the block successors' weights, potentially scaling them to fit
   // within 32-bits. If scaling is required, sets Scale based on the necessary
   // adjustment. Any edge weights used with the sum should be divided by Scale.

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineConstantPool.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineConstantPool.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineConstantPool.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineConstantPool.h Tue Jan 15 11:16:16 2013
@@ -25,7 +25,7 @@
 
 class Constant;
 class FoldingSetNodeID;
-class TargetData;
+class DataLayout;
 class TargetMachine;
 class Type;
 class MachineConstantPool;
@@ -132,14 +132,14 @@
 /// address of the function constant pool values.
 /// @brief The machine constant pool.
 class MachineConstantPool {
-  const TargetData *TD;   ///< The machine's TargetData.
+  const DataLayout *TD;   ///< The machine's DataLayout.
   unsigned PoolAlignment; ///< The alignment for the pool.
   std::vector<MachineConstantPoolEntry> Constants; ///< The pool of constants.
   /// MachineConstantPoolValues that use an existing MachineConstantPoolEntry.
   DenseSet<MachineConstantPoolValue*> MachineCPVsSharingEntries;
 public:
   /// @brief The only constructor.
-  explicit MachineConstantPool(const TargetData *td)
+  explicit MachineConstantPool(const DataLayout *td)
     : TD(td), PoolAlignment(1) {}
   ~MachineConstantPool();
     

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFrameInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFrameInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFrameInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFrameInfo.h Tue Jan 15 11:16:16 2013
@@ -21,13 +21,15 @@
 
 namespace llvm {
 class raw_ostream;
-class TargetData;
+class DataLayout;
 class TargetRegisterClass;
 class Type;
 class MachineFunction;
 class MachineBasicBlock;
 class TargetFrameLowering;
 class BitVector;
+class Value;
+class AllocaInst;
 
 /// The CalleeSavedInfo class tracks the information need to locate where a
 /// callee saved register is in the current frame.
@@ -103,14 +105,18 @@
     // protector.
     bool MayNeedSP;
 
+    /// Alloca - If this stack object is originated from an Alloca instruction
+    /// this value saves the original IR allocation. Can be NULL.
+    const AllocaInst *Alloca;
+
     // PreAllocated - If true, the object was mapped into the local frame
     // block and doesn't need additional handling for allocation beyond that.
     bool PreAllocated;
 
     StackObject(uint64_t Sz, unsigned Al, int64_t SP, bool IM,
-                bool isSS, bool NSP)
+                bool isSS, bool NSP, const AllocaInst *Val)
       : SPOffset(SP), Size(Sz), Alignment(Al), isImmutable(IM),
-        isSpillSlot(isSS), MayNeedSP(NSP), PreAllocated(false) {}
+        isSpillSlot(isSS), MayNeedSP(NSP), Alloca(Val), PreAllocated(false) {}
   };
 
   /// Objects - The list of stack objects allocated...
@@ -362,6 +368,14 @@
     ensureMaxAlignment(Align);
   }
 
+  /// getObjectAllocation - Return the underlying Alloca of the specified
+  /// stack object if it exists. Returns 0 if none exists.
+  const AllocaInst* getObjectAllocation(int ObjectIdx) const {
+    assert(unsigned(ObjectIdx+NumFixedObjects) < Objects.size() &&
+           "Invalid Object Idx!");
+    return Objects[ObjectIdx+NumFixedObjects].Alloca;
+  }
+
   /// NeedsStackProtector - Returns true if the object may need stack
   /// protectors.
   bool MayNeedStackProtector(int ObjectIdx) const {
@@ -482,9 +496,10 @@
   /// a nonnegative identifier to represent it.
   ///
   int CreateStackObject(uint64_t Size, unsigned Alignment, bool isSS,
-                        bool MayNeedSP = false) {
+                        bool MayNeedSP = false, const AllocaInst *Alloca = 0) {
     assert(Size != 0 && "Cannot allocate zero size stack objects!");
-    Objects.push_back(StackObject(Size, Alignment, 0, false, isSS, MayNeedSP));
+    Objects.push_back(StackObject(Size, Alignment, 0, false, isSS, MayNeedSP,
+                                  Alloca));
     int Index = (int)Objects.size() - NumFixedObjects - 1;
     assert(Index >= 0 && "Bad frame index!");
     ensureMaxAlignment(Alignment);
@@ -516,7 +531,7 @@
   ///
   int CreateVariableSizedObject(unsigned Alignment) {
     HasVarSizedObjects = true;
-    Objects.push_back(StackObject(0, Alignment, 0, false, false, true));
+    Objects.push_back(StackObject(0, Alignment, 0, false, false, true, 0));
     ensureMaxAlignment(Alignment);
     return (int)Objects.size()-NumFixedObjects-1;
   }

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFunction.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFunction.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFunction.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineFunction.h Tue Jan 15 11:16:16 2013
@@ -127,8 +127,8 @@
   /// about the control flow of such functions.
   bool ExposesReturnsTwice;
 
-  MachineFunction(const MachineFunction &); // DO NOT IMPLEMENT
-  void operator=(const MachineFunction&);   // DO NOT IMPLEMENT
+  MachineFunction(const MachineFunction &) LLVM_DELETED_FUNCTION;
+  void operator=(const MachineFunction&) LLVM_DELETED_FUNCTION;
 public:
   MachineFunction(const Function *Fn, const TargetMachine &TM,
                   unsigned FunctionNum, MachineModuleInfo &MMI,
@@ -138,15 +138,19 @@
   MachineModuleInfo &getMMI() const { return MMI; }
   GCModuleInfo *getGMI() const { return GMI; }
   MCContext &getContext() const { return Ctx; }
-  
+
   /// getFunction - Return the LLVM function that this machine code represents
   ///
   const Function *getFunction() const { return Fn; }
 
+  /// getName - Return the name of the corresponding LLVM function.
+  ///
+  StringRef getName() const;
+
   /// getFunctionNumber - Return a unique ID for the current function.
   ///
   unsigned getFunctionNumber() const { return FunctionNumber; }
-  
+
   /// getTarget - Return the target machine this machine code is compiled with
   ///
   const TargetMachine &getTarget() const { return Target; }

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstr.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstr.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstr.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstr.h Tue Jan 15 11:16:16 2013
@@ -25,6 +25,7 @@
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/DenseMapInfo.h"
+#include "llvm/InlineAsm.h"
 #include "llvm/Support/DebugLoc.h"
 #include <vector>
 
@@ -81,8 +82,8 @@
   MachineBasicBlock *Parent;            // Pointer to the owning basic block.
   DebugLoc debugLoc;                    // Source line information.
 
-  MachineInstr(const MachineInstr&);   // DO NOT IMPLEMENT
-  void operator=(const MachineInstr&); // DO NOT IMPLEMENT
+  MachineInstr(const MachineInstr&) LLVM_DELETED_FUNCTION;
+  void operator=(const MachineInstr&) LLVM_DELETED_FUNCTION;
 
   // Intrusive list support
   friend struct ilist_traits<MachineInstr>;
@@ -97,25 +98,10 @@
   /// MCID NULL and no operands.
   MachineInstr();
 
-  // The next two constructors have DebugLoc and non-DebugLoc versions;
-  // over time, the non-DebugLoc versions should be phased out and eventually
-  // removed.
-
-  /// MachineInstr ctor - This constructor creates a MachineInstr and adds the
-  /// implicit operands.  It reserves space for the number of operands specified
-  /// by the MCInstrDesc.  The version with a DebugLoc should be preferred.
-  explicit MachineInstr(const MCInstrDesc &MCID, bool NoImp = false);
-
-  /// MachineInstr ctor - Work exactly the same as the ctor above, except that
-  /// the MachineInstr is created and added to the end of the specified basic
-  /// block.  The version with a DebugLoc should be preferred.
-  MachineInstr(MachineBasicBlock *MBB, const MCInstrDesc &MCID);
-
   /// MachineInstr ctor - This constructor create a MachineInstr and add the
   /// implicit operands.  It reserves space for number of operands specified by
   /// MCInstrDesc.  An explicit DebugLoc is supplied.
-  explicit MachineInstr(const MCInstrDesc &MCID, const DebugLoc dl,
-                        bool NoImp = false);
+  MachineInstr(const MCInstrDesc &MCID, const DebugLoc dl, bool NoImp = false);
 
   /// MachineInstr ctor - Work exactly the same as the ctor above, except that
   /// the MachineInstr is created and added to the end of the specified basic
@@ -420,6 +406,12 @@
     return hasProperty(MCID::Bitcast, Type);
   }
 
+  /// isSelect - Return true if this instruction is a select instruction.
+  ///
+  bool isSelect(QueryType Type = IgnoreBundle) const {
+    return hasProperty(MCID::Select, Type);
+  }
+
   /// isNotDuplicable - Return true if this instruction cannot be safely
   /// duplicated.  For example, if the instruction has a unique labels attached
   /// to it, duplicating it would cause multiple definition errors.
@@ -453,6 +445,11 @@
   /// Instructions with this flag set are not necessarily simple load
   /// instructions, they may load a value and modify it, for example.
   bool mayLoad(QueryType Type = AnyInBundle) const {
+    if (isInlineAsm()) {
+      unsigned ExtraInfo = getOperand(InlineAsm::MIOp_ExtraInfo).getImm();
+      if (ExtraInfo & InlineAsm::Extra_MayLoad)
+        return true;
+    }
     return hasProperty(MCID::MayLoad, Type);
   }
 
@@ -462,6 +459,11 @@
   /// instructions, they may store a modified value based on their operands, or
   /// may not actually modify anything, for example.
   bool mayStore(QueryType Type = AnyInBundle) const {
+    if (isInlineAsm()) {
+      unsigned ExtraInfo = getOperand(InlineAsm::MIOp_ExtraInfo).getImm();
+      if (ExtraInfo & InlineAsm::Extra_MayStore)
+        return true;
+    }
     return hasProperty(MCID::MayStore, Type);
   }
 
@@ -604,6 +606,7 @@
   bool isImplicitDef() const { return getOpcode()==TargetOpcode::IMPLICIT_DEF; }
   bool isInlineAsm() const { return getOpcode() == TargetOpcode::INLINEASM; }
   bool isStackAligningInlineAsm() const;
+  InlineAsm::AsmDialect getInlineAsmDialect() const;
   bool isInsertSubreg() const {
     return getOpcode() == TargetOpcode::INSERT_SUBREG;
   }
@@ -776,16 +779,43 @@
                         const TargetInstrInfo *TII,
                         const TargetRegisterInfo *TRI) const;
 
+  /// tieOperands - Add a tie between the register operands at DefIdx and
+  /// UseIdx. The tie will cause the register allocator to ensure that the two
+  /// operands are assigned the same physical register.
+  ///
+  /// Tied operands are managed automatically for explicit operands in the
+  /// MCInstrDesc. This method is for exceptional cases like inline asm.
+  void tieOperands(unsigned DefIdx, unsigned UseIdx);
+
+  /// findTiedOperandIdx - Given the index of a tied register operand, find the
+  /// operand it is tied to. Defs are tied to uses and vice versa. Returns the
+  /// index of the tied operand which must exist.
+  unsigned findTiedOperandIdx(unsigned OpIdx) const;
+
   /// isRegTiedToUseOperand - Given the index of a register def operand,
   /// check if the register def is tied to a source operand, due to either
   /// two-address elimination or inline assembly constraints. Returns the
   /// first tied use operand index by reference if UseOpIdx is not null.
-  bool isRegTiedToUseOperand(unsigned DefOpIdx, unsigned *UseOpIdx = 0) const;
+  bool isRegTiedToUseOperand(unsigned DefOpIdx, unsigned *UseOpIdx = 0) const {
+    const MachineOperand &MO = getOperand(DefOpIdx);
+    if (!MO.isReg() || !MO.isDef() || !MO.isTied())
+      return false;
+    if (UseOpIdx)
+      *UseOpIdx = findTiedOperandIdx(DefOpIdx);
+    return true;
+  }
 
   /// isRegTiedToDefOperand - Return true if the use operand of the specified
   /// index is tied to an def operand. It also returns the def operand index by
   /// reference if DefOpIdx is not null.
-  bool isRegTiedToDefOperand(unsigned UseOpIdx, unsigned *DefOpIdx = 0) const;
+  bool isRegTiedToDefOperand(unsigned UseOpIdx, unsigned *DefOpIdx = 0) const {
+    const MachineOperand &MO = getOperand(UseOpIdx);
+    if (!MO.isReg() || !MO.isUse() || !MO.isTied())
+      return false;
+    if (DefOpIdx)
+      *DefOpIdx = findTiedOperandIdx(UseOpIdx);
+    return true;
+  }
 
   /// clearKillInfo - Clears kill flags on all operands.
   ///
@@ -846,11 +876,11 @@
   bool isSafeToReMat(const TargetInstrInfo *TII, AliasAnalysis *AA,
                      unsigned DstReg) const;
 
-  /// hasVolatileMemoryRef - Return true if this instruction may have a
-  /// volatile memory reference, or if the information describing the
-  /// memory reference is not available. Return false if it is known to
-  /// have no volatile memory references.
-  bool hasVolatileMemoryRef() const;
+  /// hasOrderedMemoryRef - Return true if this instruction may have an ordered
+  /// or volatile memory reference, or if the information describing the memory
+  /// reference is not available. Return false if it is known to have no
+  /// ordered or volatile memory references.
+  bool hasOrderedMemoryRef() const;
 
   /// isInvariantLoad - Return true if this instruction is loading from a
   /// location whose value is invariant across the function.  For example,
@@ -929,6 +959,15 @@
   /// return null.
   MachineRegisterInfo *getRegInfo();
 
+  /// untieRegOperand - Break any tie involving OpIdx.
+  void untieRegOperand(unsigned OpIdx) {
+    MachineOperand &MO = getOperand(OpIdx);
+    if (MO.isReg() && MO.isTied()) {
+      getOperand(findTiedOperandIdx(OpIdx)).TiedTo = 0;
+      MO.TiedTo = 0;
+    }
+  }
+
   /// addImplicitDefUseOperands - Add all implicit def and use operands to
   /// this instruction.
   void addImplicitDefUseOperands();

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBuilder.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBuilder.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBuilder.h Tue Jan 15 11:16:16 2013
@@ -176,15 +176,24 @@
   }
 
   // Add a displacement from an existing MachineOperand with an added offset.
-  const MachineInstrBuilder &addDisp(const MachineOperand &Disp,
-                                     int64_t off) const {
+  const MachineInstrBuilder &addDisp(const MachineOperand &Disp, int64_t off,
+                                     unsigned char TargetFlags = 0) const {
     switch (Disp.getType()) {
       default:
         llvm_unreachable("Unhandled operand type in addDisp()");
       case MachineOperand::MO_Immediate:
         return addImm(Disp.getImm() + off);
-      case MachineOperand::MO_GlobalAddress:
-        return addGlobalAddress(Disp.getGlobal(), Disp.getOffset() + off);
+      case MachineOperand::MO_GlobalAddress: {
+        // If caller specifies new TargetFlags then use it, otherwise the
+        // default behavior is to copy the target flags from the existing
+        // MachineOperand. This means if the caller wants to clear the
+        // target flags it needs to do so explicitly.
+        if (TargetFlags)
+          return addGlobalAddress(Disp.getGlobal(), Disp.getOffset() + off,
+                                  TargetFlags);
+        return addGlobalAddress(Disp.getGlobal(), Disp.getOffset() + off,
+                                Disp.getTargetFlags());
+      }
     }
   }
 };

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBundle.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBundle.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBundle.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineInstrBundle.h Tue Jan 15 11:16:16 2013
@@ -130,9 +130,9 @@
     return OpI - InstrI->operands_begin();
   }
 
-  /// RegInfo - Information about a virtual register used by a set of operands.
+  /// VirtRegInfo - Information about a virtual register used by a set of operands.
   ///
-  struct RegInfo {
+  struct VirtRegInfo {
     /// Reads - One of the operands read the virtual register.  This does not
     /// include <undef> or <internal> use operands, see MO::readsReg().
     bool Reads;
@@ -146,6 +146,32 @@
     bool Tied;
   };
 
+  /// PhysRegInfo - Information about a physical register used by a set of
+  /// operands.
+  struct PhysRegInfo {
+    /// Clobbers - Reg or an overlapping register is defined, or a regmask 
+    /// clobbers Reg.
+    bool Clobbers;
+
+    /// Defines - Reg or a super-register is defined.
+    bool Defines;
+
+    /// DefinesOverlap - Reg or an overlapping register is defined.
+    bool DefinesOverlap;
+
+    /// Reads - Read or a super-register is read.
+    bool Reads;
+
+    /// ReadsOverlap - Reg or an overlapping register is read.
+    bool ReadsOverlap;
+
+    /// DefinesDead - All defs of a Reg or a super-register are dead.
+    bool DefinesDead;
+
+    /// There is a kill of Reg or a super-register.
+    bool Kills;
+  };
+
   /// analyzeVirtReg - Analyze how the current instruction or bundle uses a
   /// virtual register.  This function should not be called after operator++(),
   /// it expects a fresh iterator.
@@ -154,8 +180,16 @@
   /// @param Ops When set, this vector will receive an (MI, OpNum) entry for
   ///            each operand referring to Reg.
   /// @returns A filled-in RegInfo struct.
-  RegInfo analyzeVirtReg(unsigned Reg,
+  VirtRegInfo analyzeVirtReg(unsigned Reg,
                  SmallVectorImpl<std::pair<MachineInstr*, unsigned> > *Ops = 0);
+
+  /// analyzePhysReg - Analyze how the current instruction or bundle uses a
+  /// physical register.  This function should not be called after operator++(),
+  /// it expects a fresh iterator.
+  ///
+  /// @param Reg The physical register to analyze.
+  /// @returns A filled-in PhysRegInfo struct.
+  PhysRegInfo analyzePhysReg(unsigned Reg, const TargetRegisterInfo *TRI);
 };
 
 /// MIOperands - Iterate over operands of a single instruction.

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineJumpTableInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineJumpTableInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineJumpTableInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineJumpTableInfo.h Tue Jan 15 11:16:16 2013
@@ -26,7 +26,7 @@
 namespace llvm {
 
 class MachineBasicBlock;
-class TargetData;
+class DataLayout;
 class raw_ostream;
 
 /// MachineJumpTableEntry - One jump table in the jump table info.
@@ -84,9 +84,9 @@
   JTEntryKind getEntryKind() const { return EntryKind; }
 
   /// getEntrySize - Return the size of each entry in the jump table.
-  unsigned getEntrySize(const TargetData &TD) const;
+  unsigned getEntrySize(const DataLayout &TD) const;
   /// getEntryAlignment - Return the alignment of each entry in the jump table.
-  unsigned getEntryAlignment(const TargetData &TD) const;
+  unsigned getEntryAlignment(const DataLayout &TD) const;
 
   /// createJumpTableIndex - Create a new jump table.
   ///

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineLoopInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineLoopInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineLoopInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineLoopInfo.h Tue Jan 15 11:16:16 2013
@@ -73,8 +73,8 @@
   LoopInfoBase<MachineBasicBlock, MachineLoop> LI;
   friend class LoopBase<MachineBasicBlock, MachineLoop>;
 
-  void operator=(const MachineLoopInfo &);  // do not implement
-  MachineLoopInfo(const MachineLoopInfo &); // do not implement
+  void operator=(const MachineLoopInfo &) LLVM_DELETED_FUNCTION;
+  MachineLoopInfo(const MachineLoopInfo &) LLVM_DELETED_FUNCTION;
 
 public:
   static char ID; // Pass identification, replacement for typeid

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineMemOperand.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineMemOperand.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineMemOperand.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineMemOperand.h Tue Jan 15 11:16:16 2013
@@ -151,6 +151,15 @@
   bool isNonTemporal() const { return Flags & MONonTemporal; }
   bool isInvariant() const { return Flags & MOInvariant; }
 
+  /// isUnordered - Returns true if this memory operation doesn't have any
+  /// ordering constraints other than normal aliasing. Volatile and atomic
+  /// memory operations can't be reordered.
+  ///
+  /// Currently, we don't model the difference between volatile and atomic
+  /// operations. They should retain their ordering relative to all memory
+  /// operations.
+  bool isUnordered() const { return !isVolatile(); }
+
   /// refineAlignment - Update this MachineMemOperand to reflect the alignment
   /// of MMO, if it has a greater alignment. This must only be used when the
   /// new alignment applies to all users of this MachineMemOperand.

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineModuleInfoImpls.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineModuleInfoImpls.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineModuleInfoImpls.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineModuleInfoImpls.h Tue Jan 15 11:16:16 2013
@@ -38,7 +38,7 @@
     /// this GV is external.
     DenseMap<MCSymbol*, StubValueTy> HiddenGVStubs;
     
-    virtual void Anchor();  // Out of line virtual method.
+    virtual void anchor();  // Out of line virtual method.
   public:
     MachineModuleInfoMachO(const MachineModuleInfo &) {}
     
@@ -76,7 +76,7 @@
     /// mode.
     DenseMap<MCSymbol*, StubValueTy> GVStubs;
 
-    virtual void Anchor();  // Out of line virtual method.
+    virtual void anchor();  // Out of line virtual method.
   public:
     MachineModuleInfoELF(const MachineModuleInfo &) {}
 

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineOperand.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineOperand.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineOperand.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineOperand.h Tue Jan 15 11:16:16 2013
@@ -14,7 +14,6 @@
 #ifndef LLVM_CODEGEN_MACHINEOPERAND_H
 #define LLVM_CODEGEN_MACHINEOPERAND_H
 
-#include "llvm/ADT/Hashing.h"
 #include "llvm/Support/DataTypes.h"
 #include <cassert>
 
@@ -30,6 +29,7 @@
 class MDNode;
 class TargetMachine;
 class TargetRegisterInfo;
+class hash_code;
 class raw_ostream;
 class MCSymbol;
 
@@ -60,12 +60,20 @@
   /// union.
   unsigned char OpKind; // MachineOperandType
 
-  /// SubReg - Subregister number, only valid for MO_Register.  A value of 0
-  /// indicates the MO_Register has no subReg.
-  unsigned char SubReg;
+  // This union is discriminated by OpKind.
+  union {
+    /// SubReg - Subregister number, only valid for MO_Register.  A value of 0
+    /// indicates the MO_Register has no subReg.
+    unsigned char SubReg;
+
+    /// TargetFlags - This is a set of target-specific operand flags.
+    unsigned char TargetFlags;
+  };
 
-  /// TargetFlags - This is a set of target-specific operand flags.
-  unsigned char TargetFlags;
+  /// TiedTo - Non-zero when this register operand is tied to another register
+  /// operand. The encoding of this field is described in the block comment
+  /// before MachineInstr::tieOperands().
+  unsigned char TiedTo : 4;
 
   /// IsDef/IsImp/IsKill/IsDead flags - These are only valid for MO_Register
   /// operands.
@@ -176,9 +184,17 @@
   ///
   MachineOperandType getType() const { return (MachineOperandType)OpKind; }
 
-  unsigned char getTargetFlags() const { return TargetFlags; }
-  void setTargetFlags(unsigned char F) { TargetFlags = F; }
-  void addTargetFlag(unsigned char F) { TargetFlags |= F; }
+  unsigned char getTargetFlags() const {
+    return isReg() ? 0 : TargetFlags;
+  }
+  void setTargetFlags(unsigned char F) {
+    assert(!isReg() && "Register operands can't have target flags");
+    TargetFlags = F;
+  }
+  void addTargetFlag(unsigned char F) {
+    assert(!isReg() && "Register operands can't have target flags");
+    TargetFlags |= F;
+  }
 
 
   /// getParent - Return the instruction that this operand belongs to.
@@ -288,6 +304,11 @@
     return IsEarlyClobber;
   }
 
+  bool isTied() const {
+    assert(isReg() && "Wrong MachineOperand accessor");
+    return TiedTo;
+  }
+
   bool isDebug() const {
     assert(isReg() && "Wrong MachineOperand accessor");
     return IsDebug;
@@ -421,7 +442,7 @@
   int64_t getOffset() const {
     assert((isGlobal() || isSymbol() || isCPI() || isTargetIndex() ||
             isBlockAddress()) && "Wrong MachineOperand accessor");
-    return (int64_t(Contents.OffsetedInfo.OffsetHi) << 32) |
+    return int64_t(uint64_t(Contents.OffsetedInfo.OffsetHi) << 32) |
            SmallContents.OffsetLo;
   }
 
@@ -548,6 +569,7 @@
     Op.IsUndef = isUndef;
     Op.IsInternalRead = isInternalRead;
     Op.IsEarlyClobber = isEarlyClobber;
+    Op.TiedTo = 0;
     Op.IsDebug = isDebug;
     Op.SmallContents.RegNo = Reg;
     Op.Contents.Reg.Prev = 0;
@@ -606,11 +628,11 @@
     Op.setTargetFlags(TargetFlags);
     return Op;
   }
-  static MachineOperand CreateBA(const BlockAddress *BA,
+  static MachineOperand CreateBA(const BlockAddress *BA, int64_t Offset,
                                  unsigned char TargetFlags = 0) {
     MachineOperand Op(MachineOperand::MO_BlockAddress);
     Op.Contents.OffsetedInfo.Val.BA = BA;
-    Op.setOffset(0); // Offset is always 0.
+    Op.setOffset(Offset);
     Op.setTargetFlags(TargetFlags);
     return Op;
   }
@@ -665,6 +687,9 @@
   return OS;
 }
 
+  // See friend declaration above. This additional declaration is required in
+  // order to compile LLVM with IBM xlC compiler.
+  hash_code hash_value(const MachineOperand &MO);
 } // End llvm namespace
 
 #endif

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineRegisterInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineRegisterInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineRegisterInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineRegisterInfo.h Tue Jan 15 11:16:16 2013
@@ -77,16 +77,20 @@
     return MO->Contents.Reg.Next;
   }
 
-  /// UsedPhysRegs - This is a bit vector that is computed and set by the
+  /// UsedRegUnits - This is a bit vector that is computed and set by the
   /// register allocator, and must be kept up to date by passes that run after
   /// register allocation (though most don't modify this).  This is used
   /// so that the code generator knows which callee save registers to save and
   /// for other target specific uses.
-  /// This vector only has bits set for registers explicitly used, not their
-  /// aliases.
-  BitVector UsedPhysRegs;
-
-  /// UsedPhysRegMask - Additional used physregs, but including aliases.
+  /// This vector has bits set for register units that are modified in the
+  /// current function. It doesn't include registers clobbered by function
+  /// calls with register mask operands.
+  BitVector UsedRegUnits;
+
+  /// UsedPhysRegMask - Additional used physregs including aliases.
+  /// This bit vector represents all the registers clobbered by function calls.
+  /// It can model things that UsedRegUnits can't, such as function calls that
+  /// clobber ymm7 but preserve the low half in xmm7.
   BitVector UsedPhysRegMask;
 
   /// ReservedRegs - This is a bit vector of reserved registers.  The target
@@ -95,9 +99,6 @@
   /// started.
   BitVector ReservedRegs;
 
-  /// AllocatableRegs - From TRI->getAllocatableSet.
-  mutable BitVector AllocatableRegs;
-
   /// LiveIns/LiveOuts - Keep track of the physical registers that are
   /// livein/liveout of the function.  Live in values are typically arguments in
   /// registers, live out values are typically return values in registers.
@@ -106,8 +107,8 @@
   std::vector<std::pair<unsigned, unsigned> > LiveIns;
   std::vector<unsigned> LiveOuts;
 
-  MachineRegisterInfo(const MachineRegisterInfo&); // DO NOT IMPLEMENT
-  void operator=(const MachineRegisterInfo&);      // DO NOT IMPLEMENT
+  MachineRegisterInfo(const MachineRegisterInfo&) LLVM_DELETED_FUNCTION;
+  void operator=(const MachineRegisterInfo&) LLVM_DELETED_FUNCTION;
 public:
   explicit MachineRegisterInfo(const TargetRegisterInfo &TRI);
   ~MachineRegisterInfo();
@@ -360,29 +361,27 @@
   //===--------------------------------------------------------------------===//
 
   /// isPhysRegUsed - Return true if the specified register is used in this
-  /// function.  This only works after register allocation.
+  /// function. Also check for clobbered aliases and registers clobbered by
+  /// function calls with register mask operands.
+  ///
+  /// This only works after register allocation. It is primarily used by
+  /// PrologEpilogInserter to determine which callee-saved registers need
+  /// spilling.
   bool isPhysRegUsed(unsigned Reg) const {
-    return UsedPhysRegs.test(Reg) || UsedPhysRegMask.test(Reg);
-  }
-
-  /// isPhysRegOrOverlapUsed - Return true if Reg or any overlapping register
-  /// is used in this function.
-  bool isPhysRegOrOverlapUsed(unsigned Reg) const {
     if (UsedPhysRegMask.test(Reg))
       return true;
-    for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI)
-      if (UsedPhysRegs.test(*AI))
+    for (MCRegUnitIterator Units(Reg, TRI); Units.isValid(); ++Units)
+      if (UsedRegUnits.test(*Units))
         return true;
     return false;
   }
 
   /// setPhysRegUsed - Mark the specified register used in this function.
   /// This should only be called during and after register allocation.
-  void setPhysRegUsed(unsigned Reg) { UsedPhysRegs.set(Reg); }
-
-  /// addPhysRegsUsed - Mark the specified registers used in this function.
-  /// This should only be called during and after register allocation.
-  void addPhysRegsUsed(const BitVector &Regs) { UsedPhysRegs |= Regs; }
+  void setPhysRegUsed(unsigned Reg) {
+    for (MCRegUnitIterator Units(Reg, TRI); Units.isValid(); ++Units)
+      UsedRegUnits.set(*Units);
+  }
 
   /// addPhysRegsUsedFromRegMask - Mark any registers not in RegMask as used.
   /// This corresponds to the bit mask attached to register mask operands.
@@ -393,8 +392,9 @@
   /// setPhysRegUnused - Mark the specified register unused in this function.
   /// This should only be called during and after register allocation.
   void setPhysRegUnused(unsigned Reg) {
-    UsedPhysRegs.reset(Reg);
     UsedPhysRegMask.reset(Reg);
+    for (MCRegUnitIterator Units(Reg, TRI); Units.isValid(); ++Units)
+      UsedRegUnits.reset(*Units);
   }
 
 
@@ -427,6 +427,34 @@
     return !reservedRegsFrozen() || ReservedRegs.test(PhysReg);
   }
 
+  /// getReservedRegs - Returns a reference to the frozen set of reserved
+  /// registers. This method should always be preferred to calling
+  /// TRI::getReservedRegs() when possible.
+  const BitVector &getReservedRegs() const {
+    assert(reservedRegsFrozen() &&
+           "Reserved registers haven't been frozen yet. "
+           "Use TRI::getReservedRegs().");
+    return ReservedRegs;
+  }
+
+  /// isReserved - Returns true when PhysReg is a reserved register.
+  ///
+  /// Reserved registers may belong to an allocatable register class, but the
+  /// target has explicitly requested that they are not used.
+  ///
+  bool isReserved(unsigned PhysReg) const {
+    return getReservedRegs().test(PhysReg);
+  }
+
+  /// isAllocatable - Returns true when PhysReg belongs to an allocatable
+  /// register class and it hasn't been reserved.
+  ///
+  /// Allocatable registers may show up in the allocation order of some virtual
+  /// register, so a register allocator needs to track its liveness and
+  /// availability.
+  bool isAllocatable(unsigned PhysReg) const {
+    return TRI->isInAllocatableClass(PhysReg) && !isReserved(PhysReg);
+  }
 
   //===--------------------------------------------------------------------===//
   // LiveIn/LiveOut Management

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineSSAUpdater.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineSSAUpdater.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineSSAUpdater.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineSSAUpdater.h Tue Jan 15 11:16:16 2013
@@ -14,6 +14,8 @@
 #ifndef LLVM_CODEGEN_MACHINESSAUPDATER_H
 #define LLVM_CODEGEN_MACHINESSAUPDATER_H
 
+#include "llvm/Support/Compiler.h"
+
 namespace llvm {
   class MachineBasicBlock;
   class MachineFunction;
@@ -106,8 +108,8 @@
   void ReplaceRegWith(unsigned OldReg, unsigned NewReg);
   unsigned GetValueAtEndOfBlockInternal(MachineBasicBlock *BB);
 
-  void operator=(const MachineSSAUpdater&); // DO NOT IMPLEMENT
-  MachineSSAUpdater(const MachineSSAUpdater&);     // DO NOT IMPLEMENT
+  void operator=(const MachineSSAUpdater&) LLVM_DELETED_FUNCTION;
+  MachineSSAUpdater(const MachineSSAUpdater&) LLVM_DELETED_FUNCTION;
 };
 
 } // End llvm namespace

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineScheduler.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineScheduler.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineScheduler.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/MachineScheduler.h Tue Jan 15 11:16:16 2013
@@ -28,9 +28,15 @@
 #define MACHINESCHEDULER_H
 
 #include "llvm/CodeGen/MachinePassRegistry.h"
+#include "llvm/CodeGen/RegisterPressure.h"
+#include "llvm/CodeGen/ScheduleDAGInstrs.h"
+#include "llvm/Target/TargetInstrInfo.h"
 
 namespace llvm {
 
+extern cl::opt<bool> ForceTopDown;
+extern cl::opt<bool> ForceBottomUp;
+
 class AliasAnalysis;
 class LiveIntervals;
 class MachineDominatorTree;
@@ -93,6 +99,237 @@
   }
 };
 
+class ScheduleDAGMI;
+
+/// MachineSchedStrategy - Interface to the scheduling algorithm used by
+/// ScheduleDAGMI.
+class MachineSchedStrategy {
+public:
+  virtual ~MachineSchedStrategy() {}
+
+  /// Initialize the strategy after building the DAG for a new region.
+  virtual void initialize(ScheduleDAGMI *DAG) = 0;
+
+  /// Notify this strategy that all roots have been released (including those
+  /// that depend on EntrySU or ExitSU).
+  virtual void registerRoots() {}
+
+  /// Pick the next node to schedule, or return NULL. Set IsTopNode to true to
+  /// schedule the node at the top of the unscheduled region. Otherwise it will
+  /// be scheduled at the bottom.
+  virtual SUnit *pickNode(bool &IsTopNode) = 0;
+
+  /// Notify MachineSchedStrategy that ScheduleDAGMI has scheduled an
+  /// instruction and updated scheduled/remaining flags in the DAG nodes.
+  virtual void schedNode(SUnit *SU, bool IsTopNode) = 0;
+
+  /// When all predecessor dependencies have been resolved, free this node for
+  /// top-down scheduling.
+  virtual void releaseTopNode(SUnit *SU) = 0;
+  /// When all successor dependencies have been resolved, free this node for
+  /// bottom-up scheduling.
+  virtual void releaseBottomNode(SUnit *SU) = 0;
+};
+
+/// ReadyQueue encapsulates vector of "ready" SUnits with basic convenience
+/// methods for pushing and removing nodes. ReadyQueue's are uniquely identified
+/// by an ID. SUnit::NodeQueueId is a mask of the ReadyQueues the SUnit is in.
+///
+/// This is a convenience class that may be used by implementations of
+/// MachineSchedStrategy.
+class ReadyQueue {
+  unsigned ID;
+  std::string Name;
+  std::vector<SUnit*> Queue;
+
+public:
+  ReadyQueue(unsigned id, const Twine &name): ID(id), Name(name.str()) {}
+
+  unsigned getID() const { return ID; }
+
+  StringRef getName() const { return Name; }
+
+  // SU is in this queue if it's NodeQueueID is a superset of this ID.
+  bool isInQueue(SUnit *SU) const { return (SU->NodeQueueId & ID); }
+
+  bool empty() const { return Queue.empty(); }
+
+  void clear() { Queue.clear(); }
+
+  unsigned size() const { return Queue.size(); }
+
+  typedef std::vector<SUnit*>::iterator iterator;
+
+  iterator begin() { return Queue.begin(); }
+
+  iterator end() { return Queue.end(); }
+
+  iterator find(SUnit *SU) {
+    return std::find(Queue.begin(), Queue.end(), SU);
+  }
+
+  void push(SUnit *SU) {
+    Queue.push_back(SU);
+    SU->NodeQueueId |= ID;
+  }
+
+  iterator remove(iterator I) {
+    (*I)->NodeQueueId &= ~ID;
+    *I = Queue.back();
+    unsigned idx = I - Queue.begin();
+    Queue.pop_back();
+    return Queue.begin() + idx;
+  }
+
+#ifndef NDEBUG
+  void dump();
+#endif
+};
+
+/// Mutate the DAG as a postpass after normal DAG building.
+class ScheduleDAGMutation {
+public:
+  virtual ~ScheduleDAGMutation() {}
+
+  virtual void apply(ScheduleDAGMI *DAG) = 0;
+};
+
+/// ScheduleDAGMI is an implementation of ScheduleDAGInstrs that schedules
+/// machine instructions while updating LiveIntervals and tracking regpressure.
+class ScheduleDAGMI : public ScheduleDAGInstrs {
+protected:
+  AliasAnalysis *AA;
+  RegisterClassInfo *RegClassInfo;
+  MachineSchedStrategy *SchedImpl;
+
+  /// Ordered list of DAG postprocessing steps.
+  std::vector<ScheduleDAGMutation*> Mutations;
+
+  MachineBasicBlock::iterator LiveRegionEnd;
+
+  /// Register pressure in this region computed by buildSchedGraph.
+  IntervalPressure RegPressure;
+  RegPressureTracker RPTracker;
+
+  /// List of pressure sets that exceed the target's pressure limit before
+  /// scheduling, listed in increasing set ID order. Each pressure set is paired
+  /// with its max pressure in the currently scheduled regions.
+  std::vector<PressureElement> RegionCriticalPSets;
+
+  /// The top of the unscheduled zone.
+  MachineBasicBlock::iterator CurrentTop;
+  IntervalPressure TopPressure;
+  RegPressureTracker TopRPTracker;
+
+  /// The bottom of the unscheduled zone.
+  MachineBasicBlock::iterator CurrentBottom;
+  IntervalPressure BotPressure;
+  RegPressureTracker BotRPTracker;
+
+#ifndef NDEBUG
+  /// The number of instructions scheduled so far. Used to cut off the
+  /// scheduler at the point determined by misched-cutoff.
+  unsigned NumInstrsScheduled;
+#endif
+
+public:
+  ScheduleDAGMI(MachineSchedContext *C, MachineSchedStrategy *S):
+    ScheduleDAGInstrs(*C->MF, *C->MLI, *C->MDT, /*IsPostRA=*/false, C->LIS),
+    AA(C->AA), RegClassInfo(C->RegClassInfo), SchedImpl(S),
+    RPTracker(RegPressure), CurrentTop(), TopRPTracker(TopPressure),
+    CurrentBottom(), BotRPTracker(BotPressure) {
+#ifndef NDEBUG
+    NumInstrsScheduled = 0;
+#endif
+  }
+
+  virtual ~ScheduleDAGMI() {
+    delete SchedImpl;
+  }
+
+  /// Add a postprocessing step to the DAG builder.
+  /// Mutations are applied in the order that they are added after normal DAG
+  /// building and before MachineSchedStrategy initialization.
+  void addMutation(ScheduleDAGMutation *Mutation) {
+    Mutations.push_back(Mutation);
+  }
+
+  MachineBasicBlock::iterator top() const { return CurrentTop; }
+  MachineBasicBlock::iterator bottom() const { return CurrentBottom; }
+
+  /// Implement the ScheduleDAGInstrs interface for handling the next scheduling
+  /// region. This covers all instructions in a block, while schedule() may only
+  /// cover a subset.
+  void enterRegion(MachineBasicBlock *bb,
+                   MachineBasicBlock::iterator begin,
+                   MachineBasicBlock::iterator end,
+                   unsigned endcount);
+
+
+  /// Implement ScheduleDAGInstrs interface for scheduling a sequence of
+  /// reorderable instructions.
+  virtual void schedule();
+
+  /// Get current register pressure for the top scheduled instructions.
+  const IntervalPressure &getTopPressure() const { return TopPressure; }
+  const RegPressureTracker &getTopRPTracker() const { return TopRPTracker; }
+
+  /// Get current register pressure for the bottom scheduled instructions.
+  const IntervalPressure &getBotPressure() const { return BotPressure; }
+  const RegPressureTracker &getBotRPTracker() const { return BotRPTracker; }
+
+  /// Get register pressure for the entire scheduling region before scheduling.
+  const IntervalPressure &getRegPressure() const { return RegPressure; }
+
+  const std::vector<PressureElement> &getRegionCriticalPSets() const {
+    return RegionCriticalPSets;
+  }
+
+protected:
+  // Top-Level entry points for the schedule() driver...
+
+  /// Call ScheduleDAGInstrs::buildSchedGraph with register pressure tracking
+  /// enabled. This sets up three trackers. RPTracker will cover the entire DAG
+  /// region, TopTracker and BottomTracker will be initialized to the top and
+  /// bottom of the DAG region without covereing any unscheduled instruction.
+  void buildDAGWithRegPressure();
+
+  /// Apply each ScheduleDAGMutation step in order. This allows different
+  /// instances of ScheduleDAGMI to perform custom DAG postprocessing.
+  void postprocessDAG();
+
+  /// Identify DAG roots and setup scheduler queues.
+  void initQueues();
+
+  /// Move an instruction and update register pressure.
+  void scheduleMI(SUnit *SU, bool IsTopNode);
+
+  /// Update scheduler DAG and queues after scheduling an instruction.
+  void updateQueues(SUnit *SU, bool IsTopNode);
+
+  /// Reinsert debug_values recorded in ScheduleDAGInstrs::DbgValues.
+  void placeDebugValues();
+
+  /// \brief dump the scheduled Sequence.
+  void dumpSchedule() const;
+
+  // Lesser helpers...
+
+  void initRegPressure();
+
+  void updateScheduledPressure(std::vector<unsigned> NewMaxPressure);
+
+  void moveInstruction(MachineInstr *MI, MachineBasicBlock::iterator InsertPos);
+  bool checkSchedLimit();
+
+  void releaseRoots();
+
+  void releaseSucc(SUnit *SU, SDep *SuccEdge);
+  void releaseSuccessors(SUnit *SU);
+  void releasePred(SUnit *SU, SDep *PredEdge);
+  void releasePredecessors(SUnit *SU);
+};
+
 } // namespace llvm
 
 #endif

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/Graph.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/Graph.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/Graph.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/Graph.h Tue Jan 15 11:16:16 2013
@@ -19,6 +19,7 @@
 
 #include <list>
 #include <map>
+#include <llvm/ADT/ilist.h>
 
 namespace PBQP {
 
@@ -31,16 +32,16 @@
     class NodeEntry;
     class EdgeEntry;
 
-    typedef std::list<NodeEntry> NodeList;
-    typedef std::list<EdgeEntry> EdgeList;
+    typedef llvm::ilist<NodeEntry> NodeList;
+    typedef llvm::ilist<EdgeEntry> EdgeList;
 
   public:
 
-    typedef NodeList::iterator NodeItr;
-    typedef NodeList::const_iterator ConstNodeItr;
+    typedef NodeEntry* NodeItr;
+    typedef const NodeEntry* ConstNodeItr;
 
-    typedef EdgeList::iterator EdgeItr;
-    typedef EdgeList::const_iterator ConstEdgeItr;
+    typedef EdgeEntry* EdgeItr;
+    typedef const EdgeEntry* ConstEdgeItr;
 
   private:
 
@@ -52,12 +53,14 @@
 
   private:
 
-    class NodeEntry {
+    class NodeEntry : public llvm::ilist_node<NodeEntry> {
+      friend struct llvm::ilist_sentinel_traits<NodeEntry>;
     private:
       Vector costs;      
       AdjEdgeList adjEdges;
       unsigned degree;
       void *data;
+      NodeEntry() : costs(0, 0) {}
     public:
       NodeEntry(const Vector &costs) : costs(costs), degree(0) {}
       Vector& getCosts() { return costs; }
@@ -77,12 +80,14 @@
       void* getData() { return data; }
     };
 
-    class EdgeEntry {
+    class EdgeEntry : public llvm::ilist_node<EdgeEntry> {
+      friend struct llvm::ilist_sentinel_traits<EdgeEntry>;
     private:
       NodeItr node1, node2;
       Matrix costs;
       AdjEdgeItr node1AEItr, node2AEItr;
       void *data;
+      EdgeEntry() : costs(0, 0, 0) {}
     public:
       EdgeEntry(NodeItr node1, NodeItr node2, const Matrix &costs)
         : node1(node1), node2(node2), costs(costs) {}

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/HeuristicBase.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/HeuristicBase.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/HeuristicBase.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/PBQP/HeuristicBase.h Tue Jan 15 11:16:16 2013
@@ -113,7 +113,7 @@
     }
 
     /// \brief Add the given node to the list of nodes to be optimally reduced.
-    /// @return nItr Node iterator to be added.
+    /// @param nItr Node iterator to be added.
     ///
     /// You probably don't want to over-ride this, except perhaps to record
     /// statistics before calling this implementation. HeuristicBase relies on
@@ -193,8 +193,9 @@
     ///        reduce list.
     /// @return True if a reduction takes place, false if the heuristic reduce
     ///         list is empty.
-    void heuristicReduce() {
+    bool heuristicReduce() {
       llvm_unreachable("Must be implemented in derived class.");
+      return false;
     }
 
     /// \brief Prepare a change in the costs on the given edge.

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/Passes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/Passes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/Passes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/Passes.h Tue Jan 15 11:16:16 2013
@@ -404,6 +404,10 @@
   /// inserting cmov instructions.
   extern char &EarlyIfConverterID;
 
+  /// StackSlotColoring - This pass performs stack coloring and merging.
+  /// It merges disjoint allocas to reduce the stack size.
+  extern char &StackColoringID;
+
   /// IfConverter - This pass performs machine code if conversion.
   extern char &IfConverterID;
 

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/PseudoSourceValue.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/PseudoSourceValue.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/PseudoSourceValue.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/PseudoSourceValue.h Tue Jan 15 11:16:16 2013
@@ -50,7 +50,6 @@
     /// classof - Methods for support type inquiry through isa, cast, and
     /// dyn_cast:
     ///
-    static inline bool classof(const PseudoSourceValue *) { return true; }
     static inline bool classof(const Value *V) {
       return V->getValueID() == PseudoSourceValueVal ||
              V->getValueID() == FixedStackPseudoSourceValueVal;
@@ -90,9 +89,6 @@
     /// classof - Methods for support type inquiry through isa, cast, and
     /// dyn_cast:
     ///
-    static inline bool classof(const FixedStackPseudoSourceValue *) {
-      return true;
-    }
     static inline bool classof(const Value *V) {
       return V->getValueID() == FixedStackPseudoSourceValueVal;
     }

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/RegAllocPBQP.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/RegAllocPBQP.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/RegAllocPBQP.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/RegAllocPBQP.h Tue Jan 15 11:16:16 2013
@@ -109,8 +109,8 @@
   /// class to support additional constraints for your architecture.
   class PBQPBuilder {
   private:
-    PBQPBuilder(const PBQPBuilder&) {}
-    void operator=(const PBQPBuilder&) {}
+    PBQPBuilder(const PBQPBuilder&) LLVM_DELETED_FUNCTION;
+    void operator=(const PBQPBuilder&) LLVM_DELETED_FUNCTION;
   public:
 
     typedef std::set<unsigned> RegSet;

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterClassInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterClassInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterClassInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterClassInfo.h Tue Jan 15 11:16:16 2013
@@ -106,25 +106,6 @@
       return CalleeSaved[N-1];
     return 0;
   }
-
-  /// isReserved - Returns true when PhysReg is a reserved register.
-  ///
-  /// Reserved registers may belong to an allocatable register class, but the
-  /// target has explicitly requested that they are not used.
-  ///
-  bool isReserved(unsigned PhysReg) const {
-    return Reserved.test(PhysReg);
-  }
-
-  /// isAllocatable - Returns true when PhysReg belongs to an allocatable
-  /// register class and it hasn't been reserved.
-  ///
-  /// Allocatable registers may show up in the allocation order of some virtual
-  /// register, so a register allocator needs to track its liveness and
-  /// availability.
-  bool isAllocatable(unsigned PhysReg) const {
-    return TRI->isInAllocatableClass(PhysReg) && !isReserved(PhysReg);
-  }
 };
 } // end namespace llvm
 

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterPressure.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterPressure.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterPressure.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterPressure.h Tue Jan 15 11:16:16 2013
@@ -43,7 +43,7 @@
   /// class. This is only useful to account for spilling or rematerialization.
   void decrease(const TargetRegisterClass *RC, const TargetRegisterInfo *TRI);
 
-  void dump(const TargetRegisterInfo *TRI);
+  void dump(const TargetRegisterInfo *TRI) const;
 };
 
 /// RegisterPressure computed within a region of instructions delimited by
@@ -197,6 +197,7 @@
   /// This result is complete if either advance() or recede() has returned true,
   /// or if closeRegion() was explicitly invoked.
   RegisterPressure &getPressure() { return P; }
+  const RegisterPressure &getPressure() const { return P; }
 
   /// Get the register set pressure at the current position, which may be less
   /// than the pressure across the traversed region.

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterScavenging.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterScavenging.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterScavenging.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/RegisterScavenging.h Tue Jan 15 11:16:16 2013
@@ -18,6 +18,7 @@
 #define LLVM_CODEGEN_REGISTER_SCAVENGING_H
 
 #include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/MachineRegisterInfo.h"
 #include "llvm/ADT/BitVector.h"
 
 namespace llvm {
@@ -59,10 +60,6 @@
   ///
   BitVector CalleeSavedRegs;
 
-  /// ReservedRegs - A bitvector of reserved registers.
-  ///
-  BitVector ReservedRegs;
-
   /// RegsAvailable - The current state of all the physical registers immediately
   /// before MBBI. One bit per physical register. If bit is set that means it's
   /// available, unset means the register is currently being used.
@@ -130,12 +127,12 @@
   void setUsed(unsigned Reg);
 private:
   /// isReserved - Returns true if a register is reserved. It is never "unused".
-  bool isReserved(unsigned Reg) const { return ReservedRegs.test(Reg); }
+  bool isReserved(unsigned Reg) const { return MRI->isReserved(Reg); }
 
   /// isUsed / isUnused - Test if a register is currently being used.
   ///
   bool isUsed(unsigned Reg) const   {
-    return !RegsAvailable.test(Reg) || ReservedRegs.test(Reg);
+    return !RegsAvailable.test(Reg) || isReserved(Reg);
   }
 
   /// isAliasUsed - Is Reg or an alias currently in use?

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAG.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAG.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAG.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAG.h Tue Jan 15 11:16:16 2013
@@ -31,6 +31,7 @@
   class MachineFunction;
   class MachineRegisterInfo;
   class MachineInstr;
+  struct MCSchedClassDesc;
   class TargetRegisterInfo;
   class ScheduleDAG;
   class SDNode;
@@ -52,6 +53,13 @@
       Order        ///< Any other ordering dependency.
     };
 
+    enum OrderKind {
+      Barrier,      ///< An unknown scheduling barrier.
+      MayAliasMem,  ///< Nonvolatile load/Store instructions that may alias.
+      MustAliasMem, ///< Nonvolatile load/Store instructions that must alias.
+      Artificial    ///< Arbitrary weak DAG edge (no actual dependence).
+    };
+
   private:
     /// Dep - A pointer to the depending/depended-on SUnit, and an enum
     /// indicating the kind of the dependency.
@@ -65,26 +73,18 @@
       unsigned Reg;
 
       /// Order - Additional information about Order dependencies.
-      struct {
-        /// isNormalMemory - True if both sides of the dependence
-        /// access memory in non-volatile and fully modeled ways.
-        bool isNormalMemory : 1;
-
-        /// isMustAlias - True if both sides of the dependence are known to
-        /// access the same memory.
-        bool isMustAlias : 1;
-
-        /// isArtificial - True if this is an artificial dependency, meaning
-        /// it is not necessary for program correctness, and may be safely
-        /// deleted if necessary.
-        bool isArtificial : 1;
-      } Order;
+      unsigned OrdKind; // enum OrderKind
     } Contents;
 
     /// Latency - The time associated with this edge. Often this is just
     /// the value of the Latency field of the predecessor, however advanced
     /// models may provide additional information about specific edges.
     unsigned Latency;
+    /// Record MinLatency seperately from "expected" Latency.
+    ///
+    /// FIXME: this field is not packed on LP64. Convert to 16-bit DAG edge
+    /// latency after introducing saturating truncation.
+    unsigned MinLatency;
 
   public:
     /// SDep - Construct a null SDep. This is only for use by container
@@ -93,28 +93,28 @@
     SDep() : Dep(0, Data) {}
 
     /// SDep - Construct an SDep with the specified values.
-    SDep(SUnit *S, Kind kind, unsigned latency = 1, unsigned Reg = 0,
-         bool isNormalMemory = false, bool isMustAlias = false,
-         bool isArtificial = false)
-      : Dep(S, kind), Contents(), Latency(latency) {
+    SDep(SUnit *S, Kind kind, unsigned Reg)
+      : Dep(S, kind), Contents() {
       switch (kind) {
+      default:
+        llvm_unreachable("Reg given for non-register dependence!");
       case Anti:
       case Output:
         assert(Reg != 0 &&
                "SDep::Anti and SDep::Output must use a non-zero Reg!");
-        // fall through
-      case Data:
-        assert(!isMustAlias && "isMustAlias only applies with SDep::Order!");
-        assert(!isArtificial && "isArtificial only applies with SDep::Order!");
         Contents.Reg = Reg;
+        Latency = 0;
         break;
-      case Order:
-        assert(Reg == 0 && "Reg given for non-register dependence!");
-        Contents.Order.isNormalMemory = isNormalMemory;
-        Contents.Order.isMustAlias = isMustAlias;
-        Contents.Order.isArtificial = isArtificial;
+      case Data:
+        Contents.Reg = Reg;
+        Latency = 1;
         break;
       }
+      MinLatency = Latency;
+    }
+    SDep(SUnit *S, OrderKind kind)
+      : Dep(S, Order), Contents(), Latency(0), MinLatency(0) {
+      Contents.OrdKind = kind;
     }
 
     /// Return true if the specified SDep is equivalent except for latency.
@@ -126,16 +126,14 @@
       case Output:
         return Contents.Reg == Other.Contents.Reg;
       case Order:
-        return Contents.Order.isNormalMemory ==
-                 Other.Contents.Order.isNormalMemory &&
-               Contents.Order.isMustAlias == Other.Contents.Order.isMustAlias &&
-               Contents.Order.isArtificial == Other.Contents.Order.isArtificial;
+        return Contents.OrdKind == Other.Contents.OrdKind;
       }
       llvm_unreachable("Invalid dependency kind!");
     }
 
     bool operator==(const SDep &Other) const {
-      return overlaps(Other) && Latency == Other.Latency;
+      return overlaps(Other)
+        && Latency == Other.Latency && MinLatency == Other.MinLatency;
     }
 
     bool operator!=(const SDep &Other) const {
@@ -155,6 +153,18 @@
       Latency = Lat;
     }
 
+    /// getMinLatency - Return the minimum latency for this edge. Minimum
+    /// latency is used for scheduling groups, while normal (expected) latency
+    /// is for instruction cost and critical path.
+    unsigned getMinLatency() const {
+      return MinLatency;
+    }
+
+    /// setMinLatency - Set the minimum latency for this edge.
+    void setMinLatency(unsigned Lat) {
+      MinLatency = Lat;
+    }
+
     //// getSUnit - Return the SUnit to which this edge points.
     SUnit *getSUnit() const {
       return Dep.getPointer();
@@ -179,20 +189,21 @@
     /// memory accesses where both sides of the dependence access memory
     /// in non-volatile and fully modeled ways.
     bool isNormalMemory() const {
-      return getKind() == Order && Contents.Order.isNormalMemory;
+      return getKind() == Order && (Contents.OrdKind == MayAliasMem
+                                    || Contents.OrdKind == MustAliasMem);
     }
 
     /// isMustAlias - Test if this is an Order dependence that is marked
     /// as "must alias", meaning that the SUnits at either end of the edge
     /// have a memory dependence on a known memory location.
     bool isMustAlias() const {
-      return getKind() == Order && Contents.Order.isMustAlias;
+      return getKind() == Order && Contents.OrdKind == MustAliasMem;
     }
 
     /// isArtificial - Test if this is an Order dependence that is marked
     /// as "artificial", meaning it isn't necessary for correctness.
     bool isArtificial() const {
-      return getKind() == Order && Contents.Order.isArtificial;
+      return getKind() == Order && Contents.OrdKind == Artificial;
     }
 
     /// isAssignedRegDep - Test if this is a Data dependence that is
@@ -239,6 +250,8 @@
                                         // this node was cloned.
                                         // (SD scheduling only)
 
+    const MCSchedClassDesc *SchedClass; // NULL or resolved SchedClass.
+
     // Preds/Succs - The SUnits before/after us in the graph.
     SmallVector<SDep, 4> Preds;  // All sunit predecessors.
     SmallVector<SDep, 4> Succs;  // All sunit successors.
@@ -286,7 +299,7 @@
     /// SUnit - Construct an SUnit for pre-regalloc scheduling to represent
     /// an SDNode and any nodes flagged to it.
     SUnit(SDNode *node, unsigned nodenum)
-      : Node(node), Instr(0), OrigNode(0), NodeNum(nodenum),
+      : Node(node), Instr(0), OrigNode(0), SchedClass(0), NodeNum(nodenum),
         NodeQueueId(0), NumPreds(0), NumSuccs(0), NumPredsLeft(0),
         NumSuccsLeft(0), NumRegDefsLeft(0), Latency(0),
         isVRegCycle(false), isCall(false), isCallOp(false), isTwoAddress(false),
@@ -300,7 +313,7 @@
     /// SUnit - Construct an SUnit for post-regalloc scheduling to represent
     /// a MachineInstr.
     SUnit(MachineInstr *instr, unsigned nodenum)
-      : Node(0), Instr(instr), OrigNode(0), NodeNum(nodenum),
+      : Node(0), Instr(instr), OrigNode(0), SchedClass(0), NodeNum(nodenum),
         NodeQueueId(0), NumPreds(0), NumSuccs(0), NumPredsLeft(0),
         NumSuccsLeft(0), NumRegDefsLeft(0), Latency(0),
         isVRegCycle(false), isCall(false), isCallOp(false), isTwoAddress(false),
@@ -313,7 +326,7 @@
 
     /// SUnit - Construct a placeholder SUnit.
     SUnit()
-      : Node(0), Instr(0), OrigNode(0), NodeNum(~0u),
+      : Node(0), Instr(0), OrigNode(0), SchedClass(0), NodeNum(~0u),
         NodeQueueId(0), NumPreds(0), NumSuccs(0), NumPredsLeft(0),
         NumSuccsLeft(0), NumRegDefsLeft(0), Latency(0),
         isVRegCycle(false), isCall(false), isCallOp(false), isTwoAddress(false),
@@ -555,16 +568,6 @@
     unsigned VerifyScheduledDAG(bool isBottomUp);
 #endif
 
-  protected:
-    /// ComputeLatency - Compute node latency.
-    ///
-    virtual void computeLatency(SUnit *SU) = 0;
-
-    /// ForceUnitLatencies - Return true if all scheduling edges should be given
-    /// a latency value of one.  The default is to return false; schedulers may
-    /// override this as needed.
-    virtual bool forceUnitLatencies() const { return false; }
-
   private:
     // Return the MCInstrDesc of this SDNode or NULL.
     const MCInstrDesc *getNodeDesc(const SDNode *Node) const;

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAGInstrs.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAGInstrs.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAGInstrs.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/ScheduleDAGInstrs.h Tue Jan 15 11:16:16 2013
@@ -18,6 +18,7 @@
 #include "llvm/CodeGen/MachineDominators.h"
 #include "llvm/CodeGen/MachineLoopInfo.h"
 #include "llvm/CodeGen/ScheduleDAG.h"
+#include "llvm/CodeGen/TargetSchedule.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/Target/TargetRegisterInfo.h"
 #include "llvm/ADT/SmallSet.h"
@@ -30,72 +31,6 @@
   class LiveIntervals;
   class RegPressureTracker;
 
-  /// LoopDependencies - This class analyzes loop-oriented register
-  /// dependencies, which are used to guide scheduling decisions.
-  /// For example, loop induction variable increments should be
-  /// scheduled as soon as possible after the variable's last use.
-  ///
-  class LoopDependencies {
-    const MachineDominatorTree &MDT;
-
-  public:
-    typedef std::map<unsigned, std::pair<const MachineOperand *, unsigned> >
-      LoopDeps;
-    LoopDeps Deps;
-
-    LoopDependencies(const MachineDominatorTree &mdt) : MDT(mdt) {}
-
-    /// VisitLoop - Clear out any previous state and analyze the given loop.
-    ///
-    void VisitLoop(const MachineLoop *Loop) {
-      assert(Deps.empty() && "stale loop dependencies");
-
-      MachineBasicBlock *Header = Loop->getHeader();
-      SmallSet<unsigned, 8> LoopLiveIns;
-      for (MachineBasicBlock::livein_iterator LI = Header->livein_begin(),
-           LE = Header->livein_end(); LI != LE; ++LI)
-        LoopLiveIns.insert(*LI);
-
-      const MachineDomTreeNode *Node = MDT.getNode(Header);
-      const MachineBasicBlock *MBB = Node->getBlock();
-      assert(Loop->contains(MBB) &&
-             "Loop does not contain header!");
-      VisitRegion(Node, MBB, Loop, LoopLiveIns);
-    }
-
-  private:
-    void VisitRegion(const MachineDomTreeNode *Node,
-                     const MachineBasicBlock *MBB,
-                     const MachineLoop *Loop,
-                     const SmallSet<unsigned, 8> &LoopLiveIns) {
-      unsigned Count = 0;
-      for (MachineBasicBlock::const_iterator I = MBB->begin(), E = MBB->end();
-           I != E; ++I) {
-        const MachineInstr *MI = I;
-        if (MI->isDebugValue())
-          continue;
-        for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) {
-          const MachineOperand &MO = MI->getOperand(i);
-          if (!MO.isReg() || !MO.isUse())
-            continue;
-          unsigned MOReg = MO.getReg();
-          if (LoopLiveIns.count(MOReg))
-            Deps.insert(std::make_pair(MOReg, std::make_pair(&MO, Count)));
-        }
-        ++Count; // Not every iteration due to dbg_value above.
-      }
-
-      const std::vector<MachineDomTreeNode*> &Children = Node->getChildren();
-      for (std::vector<MachineDomTreeNode*>::const_iterator I =
-           Children.begin(), E = Children.end(); I != E; ++I) {
-        const MachineDomTreeNode *ChildNode = *I;
-        MachineBasicBlock *ChildBlock = ChildNode->getBlock();
-        if (Loop->contains(ChildBlock))
-          VisitRegion(ChildNode, ChildBlock, Loop, LoopLiveIns);
-      }
-    }
-  };
-
   /// An individual mapping from virtual register number to SUnit.
   struct VReg2SUnit {
     unsigned VirtReg;
@@ -108,6 +43,15 @@
     }
   };
 
+  /// Record a physical register access.
+  /// For non data-dependent uses, OpIdx == -1.
+  struct PhysRegSUOper {
+    SUnit *SU;
+    int OpIdx;
+
+    PhysRegSUOper(SUnit *su, int op): SU(su), OpIdx(op) {}
+  };
+
   /// Combine a SparseSet with a 1x1 vector to track physical registers.
   /// The SparseSet allows iterating over the (few) live registers for quickly
   /// comparing against a regmask or clearing the set.
@@ -116,7 +60,7 @@
   /// cleared between scheduling regions without freeing unused entries.
   class Reg2SUnitsMap {
     SparseSet<unsigned> PhysRegSet;
-    std::vector<std::vector<SUnit*> > SUnits;
+    std::vector<std::vector<PhysRegSUOper> > SUnits;
   public:
     typedef SparseSet<unsigned>::const_iterator const_iterator;
 
@@ -140,7 +84,7 @@
 
     /// If this register is mapped, return its existing SUnits vector.
     /// Otherwise map the register and return an empty SUnits vector.
-    std::vector<SUnit *> &operator[](unsigned Reg) {
+    std::vector<PhysRegSUOper> &operator[](unsigned Reg) {
       bool New = PhysRegSet.insert(Reg).second;
       assert((!New || SUnits[Reg].empty()) && "stale SUnits vector");
       (void)New;
@@ -167,11 +111,13 @@
     const MachineLoopInfo &MLI;
     const MachineDominatorTree &MDT;
     const MachineFrameInfo *MFI;
-    const InstrItineraryData *InstrItins;
 
     /// Live Intervals provides reaching defs in preRA scheduling.
     LiveIntervals *LIS;
 
+    /// TargetSchedModel provides an interface to the machine model.
+    TargetSchedModel SchedModel;
+
     /// isPostRA flag indicates vregs cannot be present.
     bool IsPostRA;
 
@@ -223,10 +169,6 @@
     /// to minimize construction/destruction.
     std::vector<SUnit *> PendingLoads;
 
-    /// LoopRegs - Track which registers are used for loop-carried dependencies.
-    ///
-    LoopDependencies LoopRegs;
-
     /// DbgValues - Remember instruction that precedes DBG_VALUE.
     /// These are generated by buildSchedGraph but persist so they can be
     /// referenced when emitting the final schedule.
@@ -244,6 +186,16 @@
 
     virtual ~ScheduleDAGInstrs() {}
 
+    /// \brief Get the machine model for instruction scheduling.
+    const TargetSchedModel *getSchedModel() const { return &SchedModel; }
+
+    /// \brief Resolve and cache a resolved scheduling class for an SUnit.
+    const MCSchedClassDesc *getSchedClass(SUnit *SU) const {
+      if (!SU->SchedClass)
+        SU->SchedClass = SchedModel.resolveSchedClass(SU->getInstr());
+      return SU->SchedClass;
+    }
+
     /// begin - Return an iterator to the top of the current scheduling region.
     MachineBasicBlock::iterator begin() const { return RegionBegin; }
 
@@ -284,20 +236,6 @@
     /// used by instructions in the fallthrough block.
     void addSchedBarrierDeps();
 
-    /// computeLatency - Compute node latency.
-    ///
-    virtual void computeLatency(SUnit *SU);
-
-    /// computeOperandLatency - Return dependence edge latency using
-    /// operand use/def information
-    ///
-    /// FindMin may be set to get the minimum vs. expected latency. Minimum
-    /// latency is used for scheduling groups, while expected latency is for
-    /// instruction cost and critical path.
-    virtual unsigned computeOperandLatency(SUnit *Def, SUnit *Use,
-                                           const SDep& dep,
-                                           bool FindMin = false) const;
-
     /// schedule - Order nodes according to selected style, filling
     /// in the Sequence member.
     ///
@@ -319,7 +257,7 @@
 
   protected:
     void initSUnits();
-    void addPhysRegDataDeps(SUnit *SU, const MachineOperand &MO);
+    void addPhysRegDataDeps(SUnit *SU, unsigned OperIdx);
     void addPhysRegDeps(SUnit *SU, unsigned OperIdx);
     void addVRegDefDeps(SUnit *SU, unsigned OperIdx);
     void addVRegUseDeps(SUnit *SU, unsigned OperIdx);

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/SchedulerRegistry.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/SchedulerRegistry.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/SchedulerRegistry.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/SchedulerRegistry.h Tue Jan 15 11:16:16 2013
@@ -102,6 +102,11 @@
 ScheduleDAGSDNodes *createDefaultScheduler(SelectionDAGISel *IS,
                                            CodeGenOpt::Level OptLevel);
 
+/// createDAGLinearizer - This creates a "no-scheduling" scheduler which
+/// linearize the DAG using topological order.
+ScheduleDAGSDNodes *createDAGLinearizer(SelectionDAGISel *IS,
+                                        CodeGenOpt::Level OptLevel);
+
 } // end namespace llvm
 
 #endif

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAG.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAG.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAG.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAG.h Tue Jan 15 11:16:16 2013
@@ -73,8 +73,8 @@
   SmallVector<SDDbgValue*, 32> ByvalParmDbgValues;
   DenseMap<const SDNode*, SmallVector<SDDbgValue*, 2> > DbgValMap;
 
-  void operator=(const SDDbgInfo&);   // Do not implement.
-  SDDbgInfo(const SDDbgInfo&);   // Do not implement.
+  void operator=(const SDDbgInfo&) LLVM_DELETED_FUNCTION;
+  SDDbgInfo(const SDDbgInfo&) LLVM_DELETED_FUNCTION;
 public:
   SDDbgInfo() {}
 
@@ -222,8 +222,8 @@
                               DenseSet<SDNode *> &visited,
                               int level, bool &printed);
 
-  void operator=(const SelectionDAG&); // Do not implement.
-  SelectionDAG(const SelectionDAG&);   // Do not implement.
+  void operator=(const SelectionDAG&) LLVM_DELETED_FUNCTION;
+  SelectionDAG(const SelectionDAG&) LLVM_DELETED_FUNCTION;
 
 public:
   explicit SelectionDAG(const TargetMachine &TM, llvm::CodeGenOpt::Level);
@@ -437,7 +437,13 @@
   SDValue getRegisterMask(const uint32_t *RegMask);
   SDValue getEHLabel(DebugLoc dl, SDValue Root, MCSymbol *Label);
   SDValue getBlockAddress(const BlockAddress *BA, EVT VT,
-                          bool isTarget = false, unsigned char TargetFlags = 0);
+                          int64_t Offset = 0, bool isTarget = false,
+                          unsigned char TargetFlags = 0);
+  SDValue getTargetBlockAddress(const BlockAddress *BA, EVT VT,
+                                int64_t Offset = 0,
+                                unsigned char TargetFlags = 0) {
+    return getBlockAddress(BA, VT, Offset, true, TargetFlags);
+  }
 
   SDValue getCopyToReg(SDValue Chain, DebugLoc dl, unsigned Reg, SDValue N) {
     return getNode(ISD::CopyToReg, dl, MVT::Other, Chain,

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAGNodes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAGNodes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAGNodes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/SelectionDAGNodes.h Tue Jan 15 11:16:16 2013
@@ -146,7 +146,8 @@
   inline bool isMachineOpcode() const;
   inline unsigned getMachineOpcode() const;
   inline const DebugLoc getDebugLoc() const;
-
+  inline void dump() const;
+  inline void dumpr() const;
 
   /// reachesChainWithoutSideEffects - Return true if this operand (which must
   /// be a chain) reaches the specified operand without crossing any
@@ -215,8 +216,8 @@
   /// this operand.
   SDUse **Prev, *Next;
 
-  SDUse(const SDUse &U);          // Do not implement
-  void operator=(const SDUse &U); // Do not implement
+  SDUse(const SDUse &U) LLVM_DELETED_FUNCTION;
+  void operator=(const SDUse &U) LLVM_DELETED_FUNCTION;
 
 public:
   SDUse() : Val(), User(NULL), Prev(NULL), Next(NULL) {}
@@ -661,9 +662,6 @@
   ///
   void dumprWithDepth(const SelectionDAG *G = 0, unsigned depth = 100) const;
 
-
-  static bool classof(const SDNode *) { return true; }
-
   /// Profile - Gather unique data for the node.
   ///
   void Profile(FoldingSetNodeID &ID) const;
@@ -806,7 +804,12 @@
 inline const DebugLoc SDValue::getDebugLoc() const {
   return Node->getDebugLoc();
 }
-
+inline void SDValue::dump() const {
+  return Node->dump();
+}
+inline void SDValue::dumpr() const {
+  return Node->dumpr();
+}
 // Define inline functions from the SDUse class.
 
 inline void SDUse::set(const SDValue &V) {
@@ -950,7 +953,12 @@
   const MachinePointerInfo &getPointerInfo() const {
     return MMO->getPointerInfo();
   }
-  
+
+  /// getAddressSpace - Return the address space for the associated pointer
+  unsigned getAddressSpace() const {
+    return getPointerInfo().getAddrSpace();
+  }
+
   /// refineAlignment - Update this MemSDNode's MachineMemOperand information
   /// to reflect the alignment of NewMMO, if it has a greater alignment.
   /// This must only be used when the new alignment applies to all users of
@@ -965,7 +973,6 @@
   }
 
   // Methods to support isa and dyn_cast
-  static bool classof(const MemSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     // For some targets, we lower some target intrinsics to a MemIntrinsicNode
     // with either an intrinsic or a target opcode.
@@ -1005,11 +1012,6 @@
     SubclassData |= SynchScope << 12;
     assert(getOrdering() == Ordering && "Ordering encoding error!");
     assert(getSynchScope() == SynchScope && "Synch-scope encoding error!");
-
-    assert((readMem() || getOrdering() <= Monotonic) &&
-           "Acquire/Release MachineMemOperand must be a load!");
-    assert((writeMem() || getOrdering() <= Monotonic) &&
-           "Acquire/Release MachineMemOperand must be a store!");
   }
 
 public:
@@ -1055,7 +1057,6 @@
   }
 
   // Methods to support isa and dyn_cast
-  static bool classof(const AtomicSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::ATOMIC_CMP_SWAP     ||
            N->getOpcode() == ISD::ATOMIC_SWAP         ||
@@ -1087,7 +1088,6 @@
   }
 
   // Methods to support isa and dyn_cast
-  static bool classof(const MemIntrinsicSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     // We lower some target intrinsics to their target opcode
     // early a node with a target opcode can be of this class
@@ -1142,7 +1142,6 @@
   }
   static bool isSplatMask(const int *Mask, EVT VT);
 
-  static bool classof(const ShuffleVectorSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::VECTOR_SHUFFLE;
   }
@@ -1166,7 +1165,6 @@
   bool isNullValue() const { return Value->isNullValue(); }
   bool isAllOnesValue() const { return Value->isAllOnesValue(); }
 
-  static bool classof(const ConstantSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::Constant ||
            N->getOpcode() == ISD::TargetConstant;
@@ -1201,9 +1199,6 @@
   /// have to duplicate its logic everywhere it's called.
   bool isExactlyValue(double V) const {
     bool ignored;
-    // convert is not supported on this type
-    if (&Value->getValueAPF().getSemantics() == &APFloat::PPCDoubleDouble)
-      return false;
     APFloat Tmp(V);
     Tmp.convert(Value->getValueAPF().getSemantics(),
                 APFloat::rmNearestTiesToEven, &ignored);
@@ -1213,7 +1208,6 @@
 
   static bool isValueValidForType(EVT VT, const APFloat& Val);
 
-  static bool classof(const ConstantFPSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::ConstantFP ||
            N->getOpcode() == ISD::TargetConstantFP;
@@ -1235,7 +1229,6 @@
   // Return the address space this GlobalAddress belongs to.
   unsigned getAddressSpace() const;
 
-  static bool classof(const GlobalAddressSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::GlobalAddress ||
            N->getOpcode() == ISD::TargetGlobalAddress ||
@@ -1255,7 +1248,6 @@
 
   int getIndex() const { return FI; }
 
-  static bool classof(const FrameIndexSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::FrameIndex ||
            N->getOpcode() == ISD::TargetFrameIndex;
@@ -1275,7 +1267,6 @@
   int getIndex() const { return JTI; }
   unsigned char getTargetFlags() const { return TargetFlags; }
 
-  static bool classof(const JumpTableSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::JumpTable ||
            N->getOpcode() == ISD::TargetJumpTable;
@@ -1336,7 +1327,6 @@
 
   Type *getType() const;
 
-  static bool classof(const ConstantPoolSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::ConstantPool ||
            N->getOpcode() == ISD::TargetConstantPool;
@@ -1360,7 +1350,6 @@
   int getIndex() const { return Index; }
   int64_t getOffset() const { return Offset; }
 
-  static bool classof(const TargetIndexSDNode*) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::TargetIndex;
   }
@@ -1379,7 +1368,6 @@
 
   MachineBasicBlock *getBasicBlock() const { return MBB; }
 
-  static bool classof(const BasicBlockSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::BasicBlock;
   }
@@ -1389,7 +1377,7 @@
 /// BUILD_VECTORs.
 class BuildVectorSDNode : public SDNode {
   // These are constructed as SDNodes and then cast to BuildVectorSDNodes.
-  explicit BuildVectorSDNode();        // Do not implement
+  explicit BuildVectorSDNode() LLVM_DELETED_FUNCTION;
 public:
   /// isConstantSplat - Check if this is a constant splat, and if so, find the
   /// smallest element size that splats the vector.  If MinSplatBits is
@@ -1404,7 +1392,6 @@
                        unsigned &SplatBitSize, bool &HasAnyUndefs,
                        unsigned MinSplatBits = 0, bool isBigEndian = false);
 
-  static inline bool classof(const BuildVectorSDNode *) { return true; }
   static inline bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::BUILD_VECTOR;
   }
@@ -1425,7 +1412,6 @@
   /// getValue - return the contained Value.
   const Value *getValue() const { return V; }
 
-  static bool classof(const SrcValueSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::SRCVALUE;
   }
@@ -1440,7 +1426,6 @@
   
   const MDNode *getMD() const { return MD; }
   
-  static bool classof(const MDNodeSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::MDNODE_SDNODE;
   }
@@ -1457,7 +1442,6 @@
 
   unsigned getReg() const { return Reg; }
 
-  static bool classof(const RegisterSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::Register;
   }
@@ -1474,7 +1458,6 @@
 
   const uint32_t *getRegMask() const { return RegMask; }
 
-  static bool classof(const RegisterMaskSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::RegisterMask;
   }
@@ -1482,18 +1465,19 @@
 
 class BlockAddressSDNode : public SDNode {
   const BlockAddress *BA;
+  int64_t Offset;
   unsigned char TargetFlags;
   friend class SelectionDAG;
   BlockAddressSDNode(unsigned NodeTy, EVT VT, const BlockAddress *ba,
-                     unsigned char Flags)
+                     int64_t o, unsigned char Flags)
     : SDNode(NodeTy, DebugLoc(), getSDVTList(VT)),
-             BA(ba), TargetFlags(Flags) {
+             BA(ba), Offset(o), TargetFlags(Flags) {
   }
 public:
   const BlockAddress *getBlockAddress() const { return BA; }
+  int64_t getOffset() const { return Offset; }
   unsigned char getTargetFlags() const { return TargetFlags; }
 
-  static bool classof(const BlockAddressSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::BlockAddress ||
            N->getOpcode() == ISD::TargetBlockAddress;
@@ -1511,7 +1495,6 @@
 public:
   MCSymbol *getLabel() const { return Label; }
 
-  static bool classof(const EHLabelSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::EH_LABEL;
   }
@@ -1531,7 +1514,6 @@
   const char *getSymbol() const { return Symbol; }
   unsigned char getTargetFlags() const { return TargetFlags; }
 
-  static bool classof(const ExternalSymbolSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::ExternalSymbol ||
            N->getOpcode() == ISD::TargetExternalSymbol;
@@ -1549,7 +1531,6 @@
 
   ISD::CondCode get() const { return Condition; }
 
-  static bool classof(const CondCodeSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::CONDCODE;
   }
@@ -1569,7 +1550,6 @@
 public:
   ISD::CvtCode getCvtCode() const { return CvtCode; }
 
-  static bool classof(const CvtRndSatSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::CONVERT_RNDSAT;
   }
@@ -1588,7 +1568,6 @@
 
   EVT getVT() const { return ValueType; }
 
-  static bool classof(const VTSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::VALUETYPE;
   }
@@ -1632,7 +1611,6 @@
   /// isUnindexed - Return true if this is NOT a pre/post inc/dec load/store.
   bool isUnindexed() const { return getAddressingMode() == ISD::UNINDEXED; }
 
-  static bool classof(const LSBaseSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::LOAD ||
            N->getOpcode() == ISD::STORE;
@@ -1664,7 +1642,6 @@
   const SDValue &getBasePtr() const { return getOperand(1); }
   const SDValue &getOffset() const { return getOperand(2); }
 
-  static bool classof(const LoadSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::LOAD;
   }
@@ -1695,7 +1672,6 @@
   const SDValue &getBasePtr() const { return getOperand(2); }
   const SDValue &getOffset() const { return getOperand(3); }
 
-  static bool classof(const StoreSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->getOpcode() == ISD::STORE;
   }
@@ -1736,7 +1712,6 @@
     MemRefsEnd = NewMemRefsEnd;
   }
 
-  static bool classof(const MachineSDNode *) { return true; }
   static bool classof(const SDNode *N) {
     return N->isMachineOpcode();
   }
@@ -1744,10 +1719,10 @@
 
 class SDNodeIterator : public std::iterator<std::forward_iterator_tag,
                                             SDNode, ptrdiff_t> {
-  SDNode *Node;
+  const SDNode *Node;
   unsigned Operand;
 
-  SDNodeIterator(SDNode *N, unsigned Op) : Node(N), Operand(Op) {}
+  SDNodeIterator(const SDNode *N, unsigned Op) : Node(N), Operand(Op) {}
 public:
   bool operator==(const SDNodeIterator& x) const {
     return Operand == x.Operand;
@@ -1778,8 +1753,8 @@
     return Operand - Other.Operand;
   }
 
-  static SDNodeIterator begin(SDNode *N) { return SDNodeIterator(N, 0); }
-  static SDNodeIterator end  (SDNode *N) {
+  static SDNodeIterator begin(const SDNode *N) { return SDNodeIterator(N, 0); }
+  static SDNodeIterator end  (const SDNode *N) {
     return SDNodeIterator(N, N->getNumOperands());
   }
 

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.h Tue Jan 15 11:16:16 2013
@@ -56,50 +56,56 @@
       FIRST_FP_VALUETYPE = f16,
       LAST_FP_VALUETYPE  = ppcf128,
 
-      v2i8           =  13,   //  2 x i8
-      v4i8           =  14,   //  4 x i8
-      v8i8           =  15,   //  8 x i8
-      v16i8          =  16,   // 16 x i8
-      v32i8          =  17,   // 32 x i8
-      v2i16          =  18,   //  2 x i16
-      v4i16          =  19,   //  4 x i16
-      v8i16          =  20,   //  8 x i16
-      v16i16         =  21,   // 16 x i16
-      v2i32          =  22,   //  2 x i32
-      v4i32          =  23,   //  4 x i32
-      v8i32          =  24,   //  8 x i32
-      v16i32         =  25,   // 16 x i32
-      v1i64          =  26,   //  1 x i64
-      v2i64          =  27,   //  2 x i64
-      v4i64          =  28,   //  4 x i64
-      v8i64          =  29,   //  8 x i64
-      v16i64         =  30,   // 16 x i64
-
-      v2f16          =  31,   //  2 x f16
-      v2f32          =  32,   //  2 x f32
-      v4f32          =  33,   //  4 x f32
-      v8f32          =  34,   //  8 x f32
-      v2f64          =  35,   //  2 x f64
-      v4f64          =  36,   //  4 x f64
+      v2i1           =  13,   //  2 x i1
+      v4i1           =  14,   //  4 x i1
+      v8i1           =  15,   //  8 x i1
+      v16i1          =  16,   // 16 x i1
+      v2i8           =  17,   //  2 x i8
+      v4i8           =  18,   //  4 x i8
+      v8i8           =  19,   //  8 x i8
+      v16i8          =  20,   // 16 x i8
+      v32i8          =  21,   // 32 x i8
+      v1i16          =  22,   //  1 x i16
+      v2i16          =  23,   //  2 x i16
+      v4i16          =  24,   //  4 x i16
+      v8i16          =  25,   //  8 x i16
+      v16i16         =  26,   // 16 x i16
+      v1i32          =  27,   //  1 x i32
+      v2i32          =  28,   //  2 x i32
+      v4i32          =  29,   //  4 x i32
+      v8i32          =  30,   //  8 x i32
+      v16i32         =  31,   // 16 x i32
+      v1i64          =  32,   //  1 x i64
+      v2i64          =  33,   //  2 x i64
+      v4i64          =  34,   //  4 x i64
+      v8i64          =  35,   //  8 x i64
+      v16i64         =  36,   // 16 x i64
+
+      v2f16          =  37,   //  2 x f16
+      v2f32          =  38,   //  2 x f32
+      v4f32          =  39,   //  4 x f32
+      v8f32          =  40,   //  8 x f32
+      v2f64          =  41,   //  2 x f64
+      v4f64          =  42,   //  4 x f64
 
-      FIRST_VECTOR_VALUETYPE = v2i8,
+      FIRST_VECTOR_VALUETYPE = v2i1,
       LAST_VECTOR_VALUETYPE  = v4f64,
-      FIRST_INTEGER_VECTOR_VALUETYPE = v2i8,
+      FIRST_INTEGER_VECTOR_VALUETYPE = v2i1,
       LAST_INTEGER_VECTOR_VALUETYPE = v16i64,
       FIRST_FP_VECTOR_VALUETYPE = v2f16,
       LAST_FP_VECTOR_VALUETYPE = v4f64,
 
-      x86mmx         =  37,   // This is an X86 MMX value
+      x86mmx         =  43,   // This is an X86 MMX value
 
-      Glue           =  38,   // This glues nodes together during pre-RA sched
+      Glue           =  44,   // This glues nodes together during pre-RA sched
 
-      isVoid         =  39,   // This has no value
+      isVoid         =  45,   // This has no value
 
-      Untyped        =  40,   // This value takes a register, but has
+      Untyped        =  46,   // This value takes a register, but has
                               // unspecified type.  The register class
                               // will be determined by the opcode.
 
-      LAST_VALUETYPE =  41,   // This always remains at the end of the list.
+      LAST_VALUETYPE =  47,   // This always remains at the end of the list.
 
       // This is the current maximum for LAST_VALUETYPE.
       // MVT::MAX_ALLOWED_VALUETYPE is used for asserts and to size bit vectors
@@ -158,7 +164,7 @@
       return ((SimpleTy >= MVT::FIRST_FP_VALUETYPE &&
                SimpleTy <= MVT::LAST_FP_VALUETYPE) ||
               (SimpleTy >= MVT::FIRST_FP_VECTOR_VALUETYPE &&
-         SimpleTy <= MVT::LAST_FP_VECTOR_VALUETYPE));
+               SimpleTy <= MVT::LAST_FP_VECTOR_VALUETYPE));
     }
 
     /// isInteger - Return true if this is an integer, or a vector integer type.
@@ -175,6 +181,49 @@
               SimpleTy <= MVT::LAST_VECTOR_VALUETYPE);
     }
 
+    /// is16BitVector - Return true if this is a 16-bit vector type.
+    bool is16BitVector() const {
+      return (SimpleTy == MVT::v2i8  || SimpleTy == MVT::v1i16 ||
+              SimpleTy == MVT::v16i1);
+    }
+
+    /// is32BitVector - Return true if this is a 32-bit vector type.
+    bool is32BitVector() const {
+      return (SimpleTy == MVT::v4i8  || SimpleTy == MVT::v2i16 ||
+              SimpleTy == MVT::v1i32);
+    }
+
+    /// is64BitVector - Return true if this is a 64-bit vector type.
+    bool is64BitVector() const {
+      return (SimpleTy == MVT::v8i8  || SimpleTy == MVT::v4i16 ||
+              SimpleTy == MVT::v2i32 || SimpleTy == MVT::v1i64 ||
+              SimpleTy == MVT::v2f32);
+    }
+
+    /// is128BitVector - Return true if this is a 128-bit vector type.
+    bool is128BitVector() const {
+      return (SimpleTy == MVT::v16i8 || SimpleTy == MVT::v8i16 ||
+              SimpleTy == MVT::v4i32 || SimpleTy == MVT::v2i64 ||
+              SimpleTy == MVT::v4f32 || SimpleTy == MVT::v2f64);
+    }
+
+    /// is256BitVector - Return true if this is a 256-bit vector type.
+    bool is256BitVector() const {
+      return (SimpleTy == MVT::v8f32 || SimpleTy == MVT::v4f64  ||
+              SimpleTy == MVT::v32i8 || SimpleTy == MVT::v16i16 ||
+              SimpleTy == MVT::v8i32 || SimpleTy == MVT::v4i64);
+    }
+
+    /// is512BitVector - Return true if this is a 512-bit vector type.
+    bool is512BitVector() const {
+      return (SimpleTy == MVT::v8i64 || SimpleTy == MVT::v16i32);
+    }
+
+    /// is1024BitVector - Return true if this is a 1024-bit vector type.
+    bool is1024BitVector() const {
+      return (SimpleTy == MVT::v16i64);
+    }
+
     /// isPow2VectorType - Returns true if the given vector is a power of 2.
     bool isPow2VectorType() const {
       unsigned NElts = getVectorNumElements();
@@ -202,15 +251,21 @@
       switch (SimpleTy) {
       default:
         llvm_unreachable("Not a vector MVT!");
+      case v2i1 :
+      case v4i1 :
+      case v8i1 :
+      case v16i1: return i1;
       case v2i8 :
       case v4i8 :
       case v8i8 :
       case v16i8:
       case v32i8: return i8;
+      case v1i16:
       case v2i16:
       case v4i16:
       case v8i16:
       case v16i16: return i16;
+      case v1i32:
       case v2i32:
       case v4i32:
       case v8i32:
@@ -234,21 +289,25 @@
       default:
         llvm_unreachable("Not a vector MVT!");
       case v32i8: return 32;
+      case v16i1:
       case v16i8:
       case v16i16:
       case v16i32:
       case v16i64:return 16;
+      case v8i1:
       case v8i8 :
       case v8i16:
       case v8i32:
       case v8i64:
       case v8f32: return 8;
+      case v4i1:
       case v4i8:
       case v4i16:
       case v4i32:
       case v4i64:
       case v4f32:
       case v4f64: return 4;
+      case v2i1:
       case v2i8:
       case v2i16:
       case v2i32:
@@ -256,6 +315,8 @@
       case v2f16:
       case v2f32:
       case v2f64: return 2;
+      case v1i16:
+      case v1i32:
       case v1i64: return 1;
       }
     }
@@ -271,15 +332,21 @@
       default:
         llvm_unreachable("getSizeInBits called on extended MVT.");
       case i1  :  return 1;
-      case i8  :  return 8;
+      case v2i1:  return 2;
+      case v4i1:  return 4;
+      case i8  :
+      case v8i1: return 8;
       case i16 :
       case f16:
-      case v2i8:  return 16;
+      case v16i1:
+      case v2i8:
+      case v1i16: return 16;
       case f32 :
       case i32 :
       case v4i8:
       case v2i16:
-      case v2f16: return 32;
+      case v2f16: 
+      case v1i32: return 32;
       case x86mmx:
       case f64 :
       case i64 :
@@ -362,6 +429,12 @@
       switch (VT.SimpleTy) {
       default:
         break;
+      case MVT::i1:
+        if (NumElements == 2)  return MVT::v2i1;
+        if (NumElements == 4)  return MVT::v4i1;
+        if (NumElements == 8)  return MVT::v8i1;
+        if (NumElements == 16) return MVT::v16i1;
+        break;
       case MVT::i8:
         if (NumElements == 2)  return MVT::v2i8;
         if (NumElements == 4)  return MVT::v4i8;
@@ -370,12 +443,14 @@
         if (NumElements == 32) return MVT::v32i8;
         break;
       case MVT::i16:
+        if (NumElements == 1)  return MVT::v1i16;
         if (NumElements == 2)  return MVT::v2i16;
         if (NumElements == 4)  return MVT::v4i16;
         if (NumElements == 8)  return MVT::v8i16;
         if (NumElements == 16) return MVT::v16i16;
         break;
       case MVT::i32:
+        if (NumElements == 1)  return MVT::v1i32;
         if (NumElements == 2)  return MVT::v2i32;
         if (NumElements == 4)  return MVT::v4i32;
         if (NumElements == 8)  return MVT::v8i32;
@@ -498,40 +573,39 @@
       return isSimple() ? V.isVector() : isExtendedVector();
     }
 
+    /// is16BitVector - Return true if this is a 16-bit vector type.
+    bool is16BitVector() const {
+      return isSimple() ? V.is16BitVector() : isExtended16BitVector();
+    }
+
+    /// is32BitVector - Return true if this is a 32-bit vector type.
+    bool is32BitVector() const {
+      return isSimple() ? V.is32BitVector() : isExtended32BitVector();
+    }
+
     /// is64BitVector - Return true if this is a 64-bit vector type.
     bool is64BitVector() const {
-      if (!isSimple())
-        return isExtended64BitVector();
-
-      return (V == MVT::v8i8  || V==MVT::v4i16 || V==MVT::v2i32 ||
-              V == MVT::v1i64 || V==MVT::v2f32);
+      return isSimple() ? V.is64BitVector() : isExtended64BitVector();
     }
 
     /// is128BitVector - Return true if this is a 128-bit vector type.
     bool is128BitVector() const {
-      if (!isSimple())
-        return isExtended128BitVector();
-      return (V==MVT::v16i8 || V==MVT::v8i16 || V==MVT::v4i32 ||
-              V==MVT::v2i64 || V==MVT::v4f32 || V==MVT::v2f64);
+      return isSimple() ? V.is128BitVector() : isExtended128BitVector();
     }
 
     /// is256BitVector - Return true if this is a 256-bit vector type.
     bool is256BitVector() const {
-      if (!isSimple())
-        return isExtended256BitVector();
-      return (V == MVT::v8f32  || V == MVT::v4f64 || V == MVT::v32i8 ||
-              V == MVT::v16i16 || V == MVT::v8i32 || V == MVT::v4i64);
+      return isSimple() ? V.is256BitVector() : isExtended256BitVector();
     }
 
     /// is512BitVector - Return true if this is a 512-bit vector type.
-    inline bool is512BitVector() const {
-      return isSimple() ? (V == MVT::v8i64
-          || V == MVT::v16i32) : isExtended512BitVector();
+    bool is512BitVector() const {
+      return isSimple() ? V.is512BitVector() : isExtended512BitVector();
     }
 
     /// is1024BitVector - Return true if this is a 1024-bit vector type.
-    inline bool is1024BitVector() const {
-      return isSimple() ? (V == MVT::v16i64) : isExtended1024BitVector();
+    bool is1024BitVector() const {
+      return isSimple() ? V.is1024BitVector() : isExtended1024BitVector();
     }
 
     /// isOverloaded - Return true if this is an overloaded type for TableGen.
@@ -720,6 +794,8 @@
     bool isExtendedFloatingPoint() const;
     bool isExtendedInteger() const;
     bool isExtendedVector() const;
+    bool isExtended16BitVector() const;
+    bool isExtended32BitVector() const;
     bool isExtended64BitVector() const;
     bool isExtended128BitVector() const;
     bool isExtended256BitVector() const;

Modified: llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.td
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.td?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.td (original)
+++ llvm/branches/AMDILBackend/include/llvm/CodeGen/ValueTypes.td Tue Jan 15 11:16:16 2013
@@ -33,36 +33,42 @@
 def f128   : ValueType<128, 11>;   // 128-bit floating point value
 def ppcf128: ValueType<128, 12>;   // PPC 128-bit floating point value
 
-def v2i8   : ValueType<16 , 13>;   //  2 x i8  vector value
-def v4i8   : ValueType<32 , 14>;   //  4 x i8  vector value
-def v8i8   : ValueType<64 , 15>;   //  8 x i8  vector value
-def v16i8  : ValueType<128, 16>;   // 16 x i8  vector value
-def v32i8  : ValueType<256, 17>;   // 32 x i8 vector value
-def v2i16  : ValueType<32 , 18>;   //  2 x i16 vector value
-def v4i16  : ValueType<64 , 19>;   //  4 x i16 vector value
-def v8i16  : ValueType<128, 20>;   //  8 x i16 vector value
-def v16i16 : ValueType<256, 21>;   // 16 x i16 vector value
-def v2i32  : ValueType<64 , 22>;   //  2 x i32 vector value
-def v4i32  : ValueType<128, 23>;   //  4 x i32 vector value
-def v8i32  : ValueType<256, 24>;   //  8 x i32 vector value
-def v16i32 : ValueType<512, 25>;   // 16 x i32 vector value
-def v1i64  : ValueType<64 , 26>;   //  1 x i64 vector value
-def v2i64  : ValueType<128, 27>;   //  2 x i64 vector value
-def v4i64  : ValueType<256, 28>;   //  4 x i64 vector value
-def v8i64  : ValueType<512, 29>;   //  8 x i64 vector value
-def v16i64 : ValueType<1024,30>;  // 16 x i64 vector value
-
-def v2f16  : ValueType<32 , 31>;   //  2 x f16 vector value
-def v2f32  : ValueType<64 , 32>;   //  2 x f32 vector value
-def v4f32  : ValueType<128, 33>;   //  4 x f32 vector value
-def v8f32  : ValueType<256, 34>;   //  8 x f32 vector value
-def v2f64  : ValueType<128, 35>;   //  2 x f64 vector value
-def v4f64  : ValueType<256, 36>;   //  4 x f64 vector value
-
-def x86mmx : ValueType<64 , 37>;   // X86 MMX value
-def FlagVT : ValueType<0  , 38>;   // Pre-RA sched glue
-def isVoid : ValueType<0  , 39>;   // Produces no value
-def untyped: ValueType<8  , 40>;   // Produces an untyped value
+def v2i1   : ValueType<2 ,  13>;   //  2 x i1  vector value
+def v4i1   : ValueType<4 ,  14>;   //  4 x i1  vector value
+def v8i1   : ValueType<8 ,  15>;   //  8 x i1  vector value
+def v16i1  : ValueType<16,  16>;   // 16 x i1  vector value
+def v2i8   : ValueType<16 , 17>;   //  2 x i8  vector value
+def v4i8   : ValueType<32 , 18>;   //  4 x i8  vector value
+def v8i8   : ValueType<64 , 19>;   //  8 x i8  vector value
+def v16i8  : ValueType<128, 20>;   // 16 x i8  vector value
+def v32i8  : ValueType<256, 21>;   // 32 x i8 vector value
+def v1i16  : ValueType<16 , 22>;   //  1 x i16 vector value
+def v2i16  : ValueType<32 , 23>;   //  2 x i16 vector value
+def v4i16  : ValueType<64 , 24>;   //  4 x i16 vector value
+def v8i16  : ValueType<128, 25>;   //  8 x i16 vector value
+def v16i16 : ValueType<256, 26>;   // 16 x i16 vector value
+def v1i32  : ValueType<32 , 27>;   //  1 x i32 vector value
+def v2i32  : ValueType<64 , 28>;   //  2 x i32 vector value
+def v4i32  : ValueType<128, 29>;   //  4 x i32 vector value
+def v8i32  : ValueType<256, 30>;   //  8 x i32 vector value
+def v16i32 : ValueType<512, 31>;   // 16 x i32 vector value
+def v1i64  : ValueType<64 , 32>;   //  1 x i64 vector value
+def v2i64  : ValueType<128, 33>;   //  2 x i64 vector value
+def v4i64  : ValueType<256, 34>;   //  4 x i64 vector value
+def v8i64  : ValueType<512, 35>;   //  8 x i64 vector value
+def v16i64 : ValueType<1024,36>;   // 16 x i64 vector value
+
+def v2f16  : ValueType<32 , 37>;   //  2 x f16 vector value
+def v2f32  : ValueType<64 , 38>;   //  2 x f32 vector value
+def v4f32  : ValueType<128, 39>;   //  4 x f32 vector value
+def v8f32  : ValueType<256, 40>;   //  8 x f32 vector value
+def v2f64  : ValueType<128, 41>;   //  2 x f64 vector value
+def v4f64  : ValueType<256, 42>;   //  4 x f64 vector value
+
+def x86mmx : ValueType<64 , 43>;   // X86 MMX value
+def FlagVT : ValueType<0  , 44>;   // Pre-RA sched glue
+def isVoid : ValueType<0  , 45>;   // Produces no value
+def untyped: ValueType<8  , 46>;   // Produces an untyped value
 
 def MetadataVT: ValueType<0, 250>; // Metadata
 

Modified: llvm/branches/AMDILBackend/include/llvm/Config/AsmParsers.def.in
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Config/AsmParsers.def.in?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Config/AsmParsers.def.in (original)
+++ llvm/branches/AMDILBackend/include/llvm/Config/AsmParsers.def.in Tue Jan 15 11:16:16 2013
@@ -1,24 +1,24 @@
-//===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file enumerates all of the assembly-language parsers
-// supported by this build of LLVM. Clients of this file should define
-// the LLVM_ASM_PARSER macro to be a function-like macro with a
-// single parameter (the name of the target whose assembly can be
-// generated); including this file will then enumerate all of the
-// targets with assembly parsers.
-//
-// The set of targets supported by LLVM is generated at configuration
-// time, at which point this header is generated. Do not modify this
-// header directly.
-//
-//===----------------------------------------------------------------------===//
+/*===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*|
+|*                                                                            *|
+|* This file enumerates all of the assembly-language parsers                  *|
+|* supported by this build of LLVM. Clients of this file should define        *|
+|* the LLVM_ASM_PARSER macro to be a function-like macro with a               *|
+|* single parameter (the name of the target whose assembly can be             *|
+|* generated); including this file will then enumerate all of the             *|
+|* targets with assembly parsers.                                             *|
+|*                                                                            *|
+|* The set of targets supported by LLVM is generated at configuration         *|
+|* time, at which point this header is generated. Do not modify this          *|
+|* header directly.                                                           *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
 
 #ifndef LLVM_ASM_PARSER
 #  error Please define the macro LLVM_ASM_PARSER(TargetName)

Modified: llvm/branches/AMDILBackend/include/llvm/Config/AsmPrinters.def.in
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Config/AsmPrinters.def.in?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Config/AsmPrinters.def.in (original)
+++ llvm/branches/AMDILBackend/include/llvm/Config/AsmPrinters.def.in Tue Jan 15 11:16:16 2013
@@ -1,24 +1,24 @@
-//===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file enumerates all of the assembly-language printers
-// supported by this build of LLVM. Clients of this file should define
-// the LLVM_ASM_PRINTER macro to be a function-like macro with a
-// single parameter (the name of the target whose assembly can be
-// generated); including this file will then enumerate all of the
-// targets with assembly printers.
-//
-// The set of targets supported by LLVM is generated at configuration
-// time, at which point this header is generated. Do not modify this
-// header directly.
-//
-//===----------------------------------------------------------------------===//
+/*===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*|
+|*                                                                            *|
+|* This file enumerates all of the assembly-language printers                 *|
+|* supported by this build of LLVM. Clients of this file should define        *|
+|* the LLVM_ASM_PRINTER macro to be a function-like macro with a              *|
+|* single parameter (the name of the target whose assembly can be             *|
+|* generated); including this file will then enumerate all of the             *|
+|* targets with assembly printers.                                            *|
+|*                                                                            *|
+|* The set of targets supported by LLVM is generated at configuration         *|
+|* time, at which point this header is generated. Do not modify this          *|
+|* header directly.                                                           *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
 
 #ifndef LLVM_ASM_PRINTER
 #  error Please define the macro LLVM_ASM_PRINTER(TargetName)

Modified: llvm/branches/AMDILBackend/include/llvm/Config/Disassemblers.def.in
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Config/Disassemblers.def.in?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Config/Disassemblers.def.in (original)
+++ llvm/branches/AMDILBackend/include/llvm/Config/Disassemblers.def.in Tue Jan 15 11:16:16 2013
@@ -1,24 +1,24 @@
-//===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file enumerates all of the assembly-language parsers
-// supported by this build of LLVM. Clients of this file should define
-// the LLVM_DISASSEMBLER macro to be a function-like macro with a
-// single parameter (the name of the target whose assembly can be
-// generated); including this file will then enumerate all of the
-// targets with assembly parsers.
-//
-// The set of targets supported by LLVM is generated at configuration
-// time, at which point this header is generated. Do not modify this
-// header directly.
-//
-//===----------------------------------------------------------------------===//
+/*===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*|
+|*                                                                            *|
+|* This file enumerates all of the assembly-language parsers                  *|
+|* supported by this build of LLVM. Clients of this file should define        *|
+|* the LLVM_DISASSEMBLER macro to be a function-like macro with a             *|
+|* single parameter (the name of the target whose assembly can be             *|
+|* generated); including this file will then enumerate all of the             *|
+|* targets with assembly parsers.                                             *|
+|*                                                                            *|
+|* The set of targets supported by LLVM is generated at configuration         *|
+|* time, at which point this header is generated. Do not modify this          *|
+|* header directly.                                                           *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
 
 #ifndef LLVM_DISASSEMBLER
 #  error Please define the macro LLVM_DISASSEMBLER(TargetName)

Modified: llvm/branches/AMDILBackend/include/llvm/Config/config.h.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Config/config.h.cmake?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Config/config.h.cmake (original)
+++ llvm/branches/AMDILBackend/include/llvm/Config/config.h.cmake Tue Jan 15 11:16:16 2013
@@ -1,6 +1,4 @@
-/**************************************
-** Created by Kevin from config.h.in **
-***************************************/
+/* include/llvm/Config/config.h.cmake corresponding to config.h.in. */
 
 #ifndef CONFIG_H
 #define CONFIG_H
@@ -17,6 +15,9 @@
 /* Default <path> to all compiler invocations for --sysroot=<path>. */
 #undef DEFAULT_SYSROOT
 
+/* Define if you want backtraces on crash */
+#cmakedefine ENABLE_BACKTRACES
+
 /* Define if position independent code is enabled */
 #cmakedefine ENABLE_PIC
 
@@ -51,7 +52,7 @@
 #cmakedefine HAVE_ASSERT_H ${HAVE_ASSERT_H}
 
 /* Define to 1 if you have the `backtrace' function. */
-#undef HAVE_BACKTRACE
+#cmakedefine HAVE_BACKTRACE ${HAVE_BACKTRACE}
 
 /* Define to 1 if you have the `bcopy' function. */
 #undef HAVE_BCOPY

Modified: llvm/branches/AMDILBackend/include/llvm/Config/config.h.in
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Config/config.h.in?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Config/config.h.in (original)
+++ llvm/branches/AMDILBackend/include/llvm/Config/config.h.in Tue Jan 15 11:16:16 2013
@@ -18,6 +18,9 @@
 /* Default <path> to all compiler invocations for --sysroot=<path>. */
 #undef DEFAULT_SYSROOT
 
+/* Define if you want backtraces on crash */
+#undef ENABLE_BACKTRACES
+
 /* Define if position independent code is enabled */
 #undef ENABLE_PIC
 

Modified: llvm/branches/AMDILBackend/include/llvm/Constant.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Constant.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Constant.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Constant.h Tue Jan 15 11:16:16 2013
@@ -39,8 +39,8 @@
 /// don't have to worry about the lifetime of the objects.
 /// @brief LLVM Constant Representation
 class Constant : public User {
-  void operator=(const Constant &);     // Do not implement
-  Constant(const Constant &);           // Do not implement
+  void operator=(const Constant &) LLVM_DELETED_FUNCTION;
+  Constant(const Constant &) LLVM_DELETED_FUNCTION;
   virtual void anchor();
   
 protected:
@@ -65,6 +65,9 @@
   /// true for things like constant expressions that could divide by zero.
   bool canTrap() const;
 
+  /// isThreadDependent - Return true if the value can vary between threads.
+  bool isThreadDependent() const;
+
   /// isConstantUsed - Return true if the constant has users other than constant
   /// exprs and other dangling things.
   bool isConstantUsed() const;
@@ -108,8 +111,6 @@
   virtual void destroyConstant() { llvm_unreachable("Not reached!"); }
 
   //// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const Constant *) { return true; }
-  static inline bool classof(const GlobalValue *) { return true; }
   static inline bool classof(const Value *V) {
     return V->getValueID() >= ConstantFirstVal &&
            V->getValueID() <= ConstantLastVal;

Modified: llvm/branches/AMDILBackend/include/llvm/Constants.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/Constants.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/Constants.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/Constants.h Tue Jan 15 11:16:16 2013
@@ -49,8 +49,8 @@
 /// @brief Class for constant integers.
 class ConstantInt : public Constant {
   virtual void anchor();
-  void *operator new(size_t, unsigned);  // DO NOT IMPLEMENT
-  ConstantInt(const ConstantInt &);      // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  ConstantInt(const ConstantInt &) LLVM_DELETED_FUNCTION;
   ConstantInt(IntegerType *Ty, const APInt& V);
   APInt Val;
 protected:
@@ -221,7 +221,6 @@
   }
 
   /// @brief Methods to support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const ConstantInt *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantIntVal;
   }
@@ -234,8 +233,8 @@
 class ConstantFP : public Constant {
   APFloat Val;
   virtual void anchor();
-  void *operator new(size_t, unsigned);// DO NOT IMPLEMENT
-  ConstantFP(const ConstantFP &);      // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  ConstantFP(const ConstantFP &) LLVM_DELETED_FUNCTION;
   friend class LLVMContextImpl;
 protected:
   ConstantFP(Type *Ty, const APFloat& V);
@@ -283,15 +282,11 @@
 
   bool isExactlyValue(double V) const {
     bool ignored;
-    // convert is not supported on this type
-    if (&Val.getSemantics() == &APFloat::PPCDoubleDouble)
-      return false;
     APFloat FV(V);
     FV.convert(Val.getSemantics(), APFloat::rmNearestTiesToEven, &ignored);
     return isExactlyValue(FV);
   }
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const ConstantFP *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantFPVal;
   }
@@ -301,8 +296,8 @@
 /// ConstantAggregateZero - All zero aggregate value
 ///
 class ConstantAggregateZero : public Constant {
-  void *operator new(size_t, unsigned);                      // DO NOT IMPLEMENT
-  ConstantAggregateZero(const ConstantAggregateZero &);      // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  ConstantAggregateZero(const ConstantAggregateZero &) LLVM_DELETED_FUNCTION;
 protected:
   explicit ConstantAggregateZero(Type *ty)
     : Constant(ty, ConstantAggregateZeroVal, 0, 0) {}
@@ -334,7 +329,6 @@
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
   ///
-  static bool classof(const ConstantAggregateZero *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantAggregateZeroVal;
   }
@@ -346,7 +340,7 @@
 ///
 class ConstantArray : public Constant {
   friend struct ConstantArrayCreator<ConstantArray, ArrayType>;
-  ConstantArray(const ConstantArray &);      // DO NOT IMPLEMENT
+  ConstantArray(const ConstantArray &) LLVM_DELETED_FUNCTION;
 protected:
   ConstantArray(ArrayType *T, ArrayRef<Constant *> Val);
 public:
@@ -367,7 +361,6 @@
   virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const ConstantArray *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantArrayVal;
   }
@@ -385,7 +378,7 @@
 //
 class ConstantStruct : public Constant {
   friend struct ConstantArrayCreator<ConstantStruct, StructType>;
-  ConstantStruct(const ConstantStruct &);      // DO NOT IMPLEMENT
+  ConstantStruct(const ConstantStruct &) LLVM_DELETED_FUNCTION;
 protected:
   ConstantStruct(StructType *T, ArrayRef<Constant *> Val);
 public:
@@ -426,7 +419,6 @@
   virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const ConstantStruct *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantStructVal;
   }
@@ -445,7 +437,7 @@
 ///
 class ConstantVector : public Constant {
   friend struct ConstantArrayCreator<ConstantVector, VectorType>;
-  ConstantVector(const ConstantVector &);      // DO NOT IMPLEMENT
+  ConstantVector(const ConstantVector &) LLVM_DELETED_FUNCTION;
 protected:
   ConstantVector(VectorType *T, ArrayRef<Constant *> Val);
 public:
@@ -474,7 +466,6 @@
   virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const ConstantVector *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantVectorVal;
   }
@@ -491,8 +482,8 @@
 /// ConstantPointerNull - a constant pointer value that points to null
 ///
 class ConstantPointerNull : public Constant {
-  void *operator new(size_t, unsigned);                  // DO NOT IMPLEMENT
-  ConstantPointerNull(const ConstantPointerNull &);      // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  ConstantPointerNull(const ConstantPointerNull &) LLVM_DELETED_FUNCTION;
 protected:
   explicit ConstantPointerNull(PointerType *T)
     : Constant(reinterpret_cast<Type*>(T),
@@ -517,7 +508,6 @@
   }
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const ConstantPointerNull *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantPointerNullVal;
   }
@@ -543,8 +533,8 @@
   /// element array of i8, or a 1-element array of i32.  They'll both end up in
   /// the same StringMap bucket, linked up.
   ConstantDataSequential *Next;
-  void *operator new(size_t, unsigned);                      // DO NOT IMPLEMENT
-  ConstantDataSequential(const ConstantDataSequential &);    // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  ConstantDataSequential(const ConstantDataSequential &) LLVM_DELETED_FUNCTION;
 protected:
   explicit ConstantDataSequential(Type *ty, ValueTy VT, const char *Data)
     : Constant(ty, VT, 0, 0), DataElements(Data), Next(0) {}
@@ -639,7 +629,6 @@
   
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
   ///
-  static bool classof(const ConstantDataSequential *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantDataArrayVal ||
            V->getValueID() == ConstantDataVectorVal;
@@ -655,8 +644,8 @@
 /// operands because it stores all of the elements of the constant as densely
 /// packed data, instead of as Value*'s.
 class ConstantDataArray : public ConstantDataSequential {
-  void *operator new(size_t, unsigned);            // DO NOT IMPLEMENT
-  ConstantDataArray(const ConstantDataArray &);    // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  ConstantDataArray(const ConstantDataArray &) LLVM_DELETED_FUNCTION;
   virtual void anchor();
   friend class ConstantDataSequential;
   explicit ConstantDataArray(Type *ty, const char *Data)
@@ -695,7 +684,6 @@
   
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
   ///
-  static bool classof(const ConstantDataArray *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantDataArrayVal;
   }
@@ -708,8 +696,8 @@
 /// operands because it stores all of the elements of the constant as densely
 /// packed data, instead of as Value*'s.
 class ConstantDataVector : public ConstantDataSequential {
-  void *operator new(size_t, unsigned);              // DO NOT IMPLEMENT
-  ConstantDataVector(const ConstantDataVector &);    // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  ConstantDataVector(const ConstantDataVector &) LLVM_DELETED_FUNCTION;
   virtual void anchor();
   friend class ConstantDataSequential;
   explicit ConstantDataVector(Type *ty, const char *Data)
@@ -749,7 +737,6 @@
   
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
   ///
-  static bool classof(const ConstantDataVector *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == ConstantDataVectorVal;
   }
@@ -760,7 +747,7 @@
 /// BlockAddress - The address of a basic block.
 ///
 class BlockAddress : public Constant {
-  void *operator new(size_t, unsigned);                  // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
   void *operator new(size_t s) { return User::operator new(s, 2); }
   BlockAddress(Function *F, BasicBlock *BB);
 public:
@@ -781,7 +768,6 @@
   virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
   
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const BlockAddress *) { return true; }
   static inline bool classof(const Value *V) {
     return V->getValueID() == BlockAddressVal;
   }
@@ -1094,7 +1080,6 @@
   virtual void replaceUsesOfWithOnConstant(Value *From, Value *To, Use *U);
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const ConstantExpr *) { return true; }
   static inline bool classof(const Value *V) {
     return V->getValueID() == ConstantExprVal;
   }
@@ -1125,8 +1110,8 @@
 /// LangRef.html#undefvalues for details.
 ///
 class UndefValue : public Constant {
-  void *operator new(size_t, unsigned); // DO NOT IMPLEMENT
-  UndefValue(const UndefValue &);      // DO NOT IMPLEMENT
+  void *operator new(size_t, unsigned) LLVM_DELETED_FUNCTION;
+  UndefValue(const UndefValue &) LLVM_DELETED_FUNCTION;
 protected:
   explicit UndefValue(Type *T) : Constant(T, UndefValueVal, 0, 0) {}
 protected:
@@ -1159,7 +1144,6 @@
   virtual void destroyConstant();
 
   /// Methods for support type inquiry through isa, cast, and dyn_cast:
-  static inline bool classof(const UndefValue *) { return true; }
   static bool classof(const Value *V) {
     return V->getValueID() == UndefValueVal;
   }

Modified: llvm/branches/AMDILBackend/include/llvm/DIBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/DIBuilder.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/DIBuilder.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/DIBuilder.h Tue Jan 15 11:16:16 2013
@@ -63,8 +63,8 @@
     SmallVector<Value *, 4> AllSubprograms;
     SmallVector<Value *, 4> AllGVs;
 
-    DIBuilder(const DIBuilder &);       // DO NOT IMPLEMENT
-    void operator=(const DIBuilder &);  // DO NOT IMPLEMENT
+    DIBuilder(const DIBuilder &) LLVM_DELETED_FUNCTION;
+    void operator=(const DIBuilder &) LLVM_DELETED_FUNCTION;
 
     public:
     explicit DIBuilder(Module &M);
@@ -179,8 +179,10 @@
     /// @param Ty           Parent type.
     /// @param PropertyName Name of the Objective C property associated with
     ///                     this ivar.
-    /// @param GetterName   Name of the Objective C property getter selector.
-    /// @param SetterName   Name of the Objective C property setter selector.
+    /// @param PropertyGetterName Name of the Objective C property getter
+    ///                           selector.
+    /// @param PropertySetterName Name of the Objective C property setter
+    ///                           selector.
     /// @param PropertyAttributes Objective C property attributes.
     DIType createObjCIVar(StringRef Name, DIFile File,
                           unsigned LineNo, uint64_t SizeInBits, 
@@ -201,7 +203,7 @@
     /// @param OffsetInBits Member offset.
     /// @param Flags        Flags to encode member attribute, e.g. private
     /// @param Ty           Parent type.
-    /// @param Property     Property associated with this ivar.
+    /// @param PropertyNode Property associated with this ivar.
     DIType createObjCIVar(StringRef Name, DIFile File,
                           unsigned LineNo, uint64_t SizeInBits, 
                           uint64_t AlignInBits, uint64_t OffsetInBits, 
@@ -228,7 +230,7 @@
     /// @param Scope        Scope in which this class is defined.
     /// @param Name         class name.
     /// @param File         File where this member is defined.
-    /// @param LineNo       Line number.
+    /// @param LineNumber   Line number.
     /// @param SizeInBits   Member size.
     /// @param AlignInBits  Member alignment.
     /// @param OffsetInBits Member offset.
@@ -250,7 +252,7 @@
     /// @param Scope        Scope in which this struct is defined.
     /// @param Name         Struct name.
     /// @param File         File where this member is defined.
-    /// @param LineNo       Line number.
+    /// @param LineNumber   Line number.
     /// @param SizeInBits   Member size.
     /// @param AlignInBits  Member alignment.
     /// @param Flags        Flags to encode member attribute, e.g. private
@@ -265,7 +267,7 @@
     /// @param Scope        Scope in which this union is defined.
     /// @param Name         Union name.
     /// @param File         File where this member is defined.
-    /// @param LineNo       Line number.
+    /// @param LineNumber   Line number.
     /// @param SizeInBits   Member size.
     /// @param AlignInBits  Member alignment.
     /// @param Flags        Flags to encode member attribute, e.g. private
@@ -325,33 +327,36 @@
     /// @param Scope        Scope in which this enumeration is defined.
     /// @param Name         Union name.
     /// @param File         File where this member is defined.
-    /// @param LineNo       Line number.
+    /// @param LineNumber   Line number.
     /// @param SizeInBits   Member size.
     /// @param AlignInBits  Member alignment.
     /// @param Elements     Enumeration elements.
-    /// @param Flags        Flags (e.g. forward decl)
     DIType createEnumerationType(DIDescriptor Scope, StringRef Name, 
                                  DIFile File, unsigned LineNumber, 
                                  uint64_t SizeInBits, uint64_t AlignInBits,
-                                 DIArray Elements, DIType ClassType,
-                                 unsigned Flags);
+                                 DIArray Elements, DIType ClassType);
 
     /// createSubroutineType - Create subroutine type.
-    /// @param File          File in which this subroutine is defined.
-    /// @param ParamterTypes An array of subroutine parameter types. This
-    ///                      includes return type at 0th index.
+    /// @param File           File in which this subroutine is defined.
+    /// @param ParameterTypes An array of subroutine parameter types. This
+    ///                       includes return type at 0th index.
     DIType createSubroutineType(DIFile File, DIArray ParameterTypes);
 
     /// createArtificialType - Create a new DIType with "artificial" flag set.
     DIType createArtificialType(DIType Ty);
 
+    /// createObjectPointerType - Create a new DIType with the "object pointer"
+    /// flag set.
+    DIType createObjectPointerType(DIType Ty);
+
     /// createTemporaryType - Create a temporary forward-declared type.
     DIType createTemporaryType();
     DIType createTemporaryType(DIFile F);
 
     /// createForwardDecl - Create a temporary forward-declared type.
     DIType createForwardDecl(unsigned Tag, StringRef Name, DIDescriptor Scope,
-                             DIFile F, unsigned Line, unsigned RuntimeLang = 0);
+                             DIFile F, unsigned Line, unsigned RuntimeLang = 0,
+                             uint64_t SizeInBits = 0, uint64_t AlignInBits = 0);
 
     /// retainType - Retain DIType in a module even if it is not referenced 
     /// through debug info anchors.
@@ -383,9 +388,9 @@
 
     /// createStaticVariable - Create a new descriptor for the specified 
     /// variable.
-    /// @param Conext      Variable scope. 
+    /// @param Context     Variable scope.
     /// @param Name        Name of the variable.
-    /// @param LinakgeName Mangled  name of the variable.
+    /// @param LinkageName Mangled  name of the variable.
     /// @param File        File where this variable is defined.
     /// @param LineNo      Line number.
     /// @param Ty          Variable Type.
@@ -426,7 +431,7 @@
     ///                    DW_TAG_arg_variable.
     /// @param Scope       Variable scope.
     /// @param Name        Variable name.
-    /// @param File        File where this variable is defined.
+    /// @param F           File where this variable is defined.
     /// @param LineNo      Line number.
     /// @param Ty          Variable Type
     /// @param Addr        An array of complex address operations.

Modified: llvm/branches/AMDILBackend/include/llvm/DebugInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/DebugInfo.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/DebugInfo.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/DebugInfo.h Tue Jan 15 11:16:16 2013
@@ -60,7 +60,8 @@
       FlagArtificial         = 1 << 6,
       FlagExplicit           = 1 << 7,
       FlagPrototyped         = 1 << 8,
-      FlagObjcClassComplete  = 1 << 9
+      FlagObjcClassComplete  = 1 << 9,
+      FlagObjectPointer      = 1 << 10
     };
   protected:
     const MDNode *DbgNode;
@@ -80,6 +81,7 @@
     GlobalVariable *getGlobalVariableField(unsigned Elt) const;
     Constant *getConstantField(unsigned Elt) const;
     Function *getFunctionField(unsigned Elt) const;
+    void replaceFunctionField(unsigned Elt, Function *F);
 
   public:
     explicit DIDescriptor() : DbgNode(0) {}
@@ -287,6 +289,9 @@
     bool isArtificial() const {
       return (getFlags() & FlagArtificial) != 0;
     }
+    bool isObjectPointer() const {
+      return (getFlags() & FlagObjectPointer) != 0;
+    }
     bool isObjcClassComplete() const {
       return (getFlags() & FlagObjcClassComplete) != 0;
     }
@@ -558,6 +563,7 @@
     bool describes(const Function *F);
 
     Function *getFunction() const { return getFunctionField(16); }
+    void replaceFunction(Function *F) { replaceFunctionField(16, F); }
     DIArray getTemplateParams() const { return getFieldAs<DIArray>(17); }
     DISubprogram getFunctionDeclaration() const {
       return getFieldAs<DISubprogram>(18);
@@ -644,6 +650,10 @@
       return (getUnsignedField(6) & FlagArtificial) != 0;
     }
 
+    bool isObjectPointer() const {
+      return (getUnsignedField(6) & FlagObjectPointer) != 0;
+    }
+
     /// getInlinedAt - If this variable is inlined then return inline location.
     MDNode *getInlinedAt() const;
 

Modified: llvm/branches/AMDILBackend/include/llvm/DebugInfo/DIContext.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/DebugInfo/DIContext.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/DebugInfo/DIContext.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/DebugInfo/DIContext.h Tue Jan 15 11:16:16 2013
@@ -15,6 +15,8 @@
 #ifndef LLVM_DEBUGINFO_DICONTEXT_H
 #define LLVM_DEBUGINFO_DICONTEXT_H
 
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/DataTypes.h"
@@ -54,6 +56,23 @@
   }
 };
 
+/// DIInliningInfo - a format-neutral container for inlined code description.
+class DIInliningInfo {
+  SmallVector<DILineInfo, 4> Frames;
+ public:
+  DIInliningInfo() {}
+  DILineInfo getFrame(unsigned Index) const {
+    assert(Index < Frames.size());
+    return Frames[Index];
+  }
+  uint32_t getNumberOfFrames() const {
+    return Frames.size();
+  }
+  void addFrame(const DILineInfo &Frame) {
+    Frames.push_back(Frame);
+  }
+};
+
 /// DILineInfoSpecifier - controls which fields of DILineInfo container
 /// should be filled with data.
 class DILineInfoSpecifier {
@@ -71,6 +90,13 @@
   }
 };
 
+// In place of applying the relocations to the data we've read from disk we use
+// a separate mapping table to the side and checking that at locations in the
+// dwarf where we expect relocated values. This adds a bit of complexity to the
+// dwarf parsing/extraction at the benefit of not allocating memory for the
+// entire size of the debug info sections.
+typedef DenseMap<uint64_t, std::pair<uint8_t, int64_t> > RelocAddrMap;
+
 class DIContext {
 public:
   virtual ~DIContext();
@@ -81,12 +107,16 @@
                                     StringRef abbrevSection,
                                     StringRef aRangeSection = StringRef(),
                                     StringRef lineSection = StringRef(),
-                                    StringRef stringSection = StringRef());
+                                    StringRef stringSection = StringRef(),
+                                    StringRef rangeSection = StringRef(),
+                                    const RelocAddrMap &Map = RelocAddrMap());
 
   virtual void dump(raw_ostream &OS) = 0;
 
-  virtual DILineInfo getLineInfoForAddress(uint64_t address,
-      DILineInfoSpecifier specifier = DILineInfoSpecifier()) = 0;
+  virtual DILineInfo getLineInfoForAddress(uint64_t Address,
+      DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
+  virtual DIInliningInfo getInliningInfoForAddress(uint64_t Address,
+      DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
 };
 
 }

Modified: llvm/branches/AMDILBackend/include/llvm/DefaultPasses.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/DefaultPasses.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/DefaultPasses.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/DefaultPasses.h Tue Jan 15 11:16:16 2013
@@ -14,7 +14,7 @@
 #ifndef LLVM_DEFAULT_PASS_SUPPORT_H
 #define LLVM_DEFAULT_PASS_SUPPORT_H
 
-#include <llvm/PassSupport.h>
+#include "llvm/PassSupport.h"
 
 namespace llvm {
 

Modified: llvm/branches/AMDILBackend/include/llvm/DerivedTypes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/DerivedTypes.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/DerivedTypes.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/DerivedTypes.h Tue Jan 15 11:16:16 2013
@@ -20,6 +20,7 @@
 
 #include "llvm/Type.h"
 #include "llvm/Support/DataTypes.h"
+#include "llvm/Support/Compiler.h"
 
 namespace llvm {
 
@@ -84,7 +85,6 @@
   bool isPowerOf2ByteWidth() const;
 
   // Methods for support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const IntegerType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == IntegerTyID;
   }
@@ -94,8 +94,8 @@
 /// FunctionType - Class to represent function types
 ///
 class FunctionType : public Type {
-  FunctionType(const FunctionType &);                   // Do not implement
-  const FunctionType &operator=(const FunctionType &);  // Do not implement
+  FunctionType(const FunctionType &) LLVM_DELETED_FUNCTION;
+  const FunctionType &operator=(const FunctionType &) LLVM_DELETED_FUNCTION;
   FunctionType(Type *Result, ArrayRef<Type*> Params, bool IsVarArgs);
 
 public:
@@ -133,7 +133,6 @@
   unsigned getNumParams() const { return NumContainedTys - 1; }
 
   // Methods for support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const FunctionType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == FunctionTyID;
   }
@@ -156,7 +155,6 @@
   bool indexValid(unsigned Idx) const;
 
   // Methods for support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const CompositeType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == ArrayTyID ||
            T->getTypeID() == StructTyID ||
@@ -183,12 +181,12 @@
 /// Independent of what kind of struct you have, the body of a struct type are
 /// laid out in memory consequtively with the elements directly one after the
 /// other (if the struct is packed) or (if not packed) with padding between the
-/// elements as defined by TargetData (which is required to match what the code
+/// elements as defined by DataLayout (which is required to match what the code
 /// generator for a target expects).
 ///
 class StructType : public CompositeType {
-  StructType(const StructType &);                   // Do not implement
-  const StructType &operator=(const StructType &);  // Do not implement
+  StructType(const StructType &) LLVM_DELETED_FUNCTION;
+  const StructType &operator=(const StructType &) LLVM_DELETED_FUNCTION;
   StructType(LLVMContext &C)
     : CompositeType(C, StructTyID), SymbolTableEntry(0) {}
   enum {
@@ -292,7 +290,6 @@
   }
 
   // Methods for support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const StructType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == StructTyID;
   }
@@ -308,8 +305,8 @@
 ///
 class SequentialType : public CompositeType {
   Type *ContainedType;               ///< Storage for the single contained type.
-  SequentialType(const SequentialType &);                  // Do not implement!
-  const SequentialType &operator=(const SequentialType &); // Do not implement!
+  SequentialType(const SequentialType &) LLVM_DELETED_FUNCTION;
+  const SequentialType &operator=(const SequentialType &) LLVM_DELETED_FUNCTION;
 
 protected:
   SequentialType(TypeID TID, Type *ElType)
@@ -322,7 +319,6 @@
   Type *getElementType() const { return ContainedTys[0]; }
 
   // Methods for support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const SequentialType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == ArrayTyID ||
            T->getTypeID() == PointerTyID ||
@@ -336,8 +332,8 @@
 class ArrayType : public SequentialType {
   uint64_t NumElements;
 
-  ArrayType(const ArrayType &);                   // Do not implement
-  const ArrayType &operator=(const ArrayType &);  // Do not implement
+  ArrayType(const ArrayType &) LLVM_DELETED_FUNCTION;
+  const ArrayType &operator=(const ArrayType &) LLVM_DELETED_FUNCTION;
   ArrayType(Type *ElType, uint64_t NumEl);
 public:
   /// ArrayType::get - This static method is the primary way to construct an
@@ -352,7 +348,6 @@
   uint64_t getNumElements() const { return NumElements; }
 
   // Methods for support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const ArrayType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == ArrayTyID;
   }
@@ -363,8 +358,8 @@
 class VectorType : public SequentialType {
   unsigned NumElements;
 
-  VectorType(const VectorType &);                   // Do not implement
-  const VectorType &operator=(const VectorType &);  // Do not implement
+  VectorType(const VectorType &) LLVM_DELETED_FUNCTION;
+  const VectorType &operator=(const VectorType &) LLVM_DELETED_FUNCTION;
   VectorType(Type *ElType, unsigned NumEl);
 public:
   /// VectorType::get - This static method is the primary way to construct an
@@ -419,7 +414,6 @@
   }
 
   // Methods for support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const VectorType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == VectorTyID;
   }
@@ -429,8 +423,8 @@
 /// PointerType - Class to represent pointers.
 ///
 class PointerType : public SequentialType {
-  PointerType(const PointerType &);                   // Do not implement
-  const PointerType &operator=(const PointerType &);  // Do not implement
+  PointerType(const PointerType &) LLVM_DELETED_FUNCTION;
+  const PointerType &operator=(const PointerType &) LLVM_DELETED_FUNCTION;
   explicit PointerType(Type *ElType, unsigned AddrSpace);
 public:
   /// PointerType::get - This constructs a pointer to an object of the specified
@@ -451,7 +445,6 @@
   inline unsigned getAddressSpace() const { return getSubclassData(); }
 
   // Implement support type inquiry through isa, cast, and dyn_cast.
-  static inline bool classof(const PointerType *) { return true; }
   static inline bool classof(const Type *T) {
     return T->getTypeID() == PointerTyID;
   }

Modified: llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/ExecutionEngine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/ExecutionEngine.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/ExecutionEngine.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/ExecutionEngine.h Tue Jan 15 11:16:16 2013
@@ -42,7 +42,7 @@
 class MachineCodeInfo;
 class Module;
 class MutexGuard;
-class TargetData;
+class DataLayout;
 class Triple;
 class Type;
 
@@ -88,7 +88,7 @@
 
   /// \brief Erase an entry from the mapping table.
   ///
-  /// \returns The address that \arg ToUnmap was happed to.
+  /// \returns The address that \p ToUnmap was happed to.
   void *RemoveMapping(const MutexGuard &, const GlobalValue *ToUnmap);
 };
 
@@ -104,7 +104,7 @@
   ExecutionEngineState EEState;
 
   /// The target data for the platform for which execution is being performed.
-  const TargetData *TD;
+  const DataLayout *TD;
 
   /// Whether lazy JIT compilation is enabled.
   bool CompilingLazily;
@@ -123,7 +123,7 @@
   /// optimize for the case where there is only one module.
   SmallVector<Module*, 1> Modules;
 
-  void setTargetData(const TargetData *td) { TD = td; }
+  void setDataLayout(const DataLayout *td) { TD = td; }
 
   /// getMemoryforGV - Allocate memory for a global variable.
   virtual char *getMemoryForGV(const GlobalVariable *GV);
@@ -213,7 +213,7 @@
 
   //===--------------------------------------------------------------------===//
 
-  const TargetData *getTargetData() const { return TD; }
+  const DataLayout *getDataLayout() const { return TD; }
 
   /// removeModule - Remove a Module from the list of modules.  Returns true if
   /// M is found.
@@ -244,11 +244,18 @@
   /// Map the address of a JIT section as returned from the memory manager
   /// to the address in the target process as the running code will see it.
   /// This is the address which will be used for relocation resolution.
-  virtual void mapSectionAddress(void *LocalAddress, uint64_t TargetAddress) {
+  virtual void mapSectionAddress(const void *LocalAddress, uint64_t TargetAddress) {
     llvm_unreachable("Re-mapping of section addresses not supported with this "
                      "EE!");
   }
 
+  // finalizeObject - This method should be called after sections within an
+  // object have been relocated using mapSectionAddress.  When this method is
+  // called the MCJIT execution engine will reapply relocations for a loaded
+  // object.  This method has no effect for the legacy JIT engine or the
+  // interpeter.
+  virtual void finalizeObject() {}
+
   /// runStaticConstructorsDestructors - This method is used to execute all of
   /// the static constructors or destructors for a program.
   ///

Removed: llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/IntelJITEventsWrapper.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/IntelJITEventsWrapper.h?rev=172540&view=auto
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/IntelJITEventsWrapper.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/IntelJITEventsWrapper.h (removed)
@@ -1,102 +0,0 @@
-//===-- IntelJITEventsWrapper.h - Intel JIT Events API Wrapper --*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines a wrapper for the Intel JIT Events API. It allows for the
-// implementation of the jitprofiling library to be swapped with an alternative
-// implementation (for testing). To include this file, you must have the
-// jitprofiling.h header available; it is available in Intel(R) VTune(TM)
-// Amplifier XE 2011.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef INTEL_JIT_EVENTS_WRAPPER_H
-#define INTEL_JIT_EVENTS_WRAPPER_H
-
-#include <jitprofiling.h>
-
-namespace llvm {
-
-class IntelJITEventsWrapper {
-  // Function pointer types for testing implementation of Intel jitprofiling
-  // library
-  typedef int (*NotifyEventPtr)(iJIT_JVM_EVENT, void*);
-  typedef void (*RegisterCallbackExPtr)(void *, iJIT_ModeChangedEx );
-  typedef iJIT_IsProfilingActiveFlags (*IsProfilingActivePtr)(void);
-  typedef void (*FinalizeThreadPtr)(void);
-  typedef void (*FinalizeProcessPtr)(void);
-  typedef unsigned int (*GetNewMethodIDPtr)(void);
-
-  NotifyEventPtr NotifyEventFunc;
-  RegisterCallbackExPtr RegisterCallbackExFunc;
-  IsProfilingActivePtr IsProfilingActiveFunc;
-  FinalizeThreadPtr FinalizeThreadFunc;
-  FinalizeProcessPtr FinalizeProcessFunc;
-  GetNewMethodIDPtr GetNewMethodIDFunc;
-
-public:
-  bool isAmplifierRunning() {
-    return iJIT_IsProfilingActive() == iJIT_SAMPLING_ON;
-  }
-
-  IntelJITEventsWrapper()
-  : NotifyEventFunc(::iJIT_NotifyEvent),
-    RegisterCallbackExFunc(::iJIT_RegisterCallbackEx),
-    IsProfilingActiveFunc(::iJIT_IsProfilingActive),
-    FinalizeThreadFunc(::FinalizeThread),
-    FinalizeProcessFunc(::FinalizeProcess),
-    GetNewMethodIDFunc(::iJIT_GetNewMethodID) {
-  }
-
-  IntelJITEventsWrapper(NotifyEventPtr NotifyEventImpl,
-                   RegisterCallbackExPtr RegisterCallbackExImpl,
-                   IsProfilingActivePtr IsProfilingActiveImpl,
-                   FinalizeThreadPtr FinalizeThreadImpl,
-                   FinalizeProcessPtr FinalizeProcessImpl,
-                   GetNewMethodIDPtr GetNewMethodIDImpl)
-  : NotifyEventFunc(NotifyEventImpl),
-    RegisterCallbackExFunc(RegisterCallbackExImpl),
-    IsProfilingActiveFunc(IsProfilingActiveImpl),
-    FinalizeThreadFunc(FinalizeThreadImpl),
-    FinalizeProcessFunc(FinalizeProcessImpl),
-    GetNewMethodIDFunc(GetNewMethodIDImpl) {
-  }
-
-  // Sends an event anncouncing that a function has been emitted
-  //   return values are event-specific.  See Intel documentation for details.
-  int  iJIT_NotifyEvent(iJIT_JVM_EVENT EventType, void *EventSpecificData) {
-    if (!NotifyEventFunc)
-      return -1;
-    return NotifyEventFunc(EventType, EventSpecificData);
-  }
-
-  // Registers a callback function to receive notice of profiling state changes
-  void iJIT_RegisterCallbackEx(void *UserData,
-                               iJIT_ModeChangedEx NewModeCallBackFuncEx) {
-    if (RegisterCallbackExFunc)
-      RegisterCallbackExFunc(UserData, NewModeCallBackFuncEx);
-  }
-
-  // Returns the current profiler mode
-  iJIT_IsProfilingActiveFlags iJIT_IsProfilingActive(void) {
-    if (!IsProfilingActiveFunc)
-      return iJIT_NOTHING_RUNNING;
-    return IsProfilingActiveFunc();
-  }
-
-  // Generates a locally unique method ID for use in code registration
-  unsigned int iJIT_GetNewMethodID(void) {
-    if (!GetNewMethodIDFunc)
-      return -1;
-    return GetNewMethodIDFunc();
-  }
-};
-
-} //namespace llvm
-
-#endif //INTEL_JIT_EVENTS_WRAPPER_H

Modified: llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITEventListener.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITEventListener.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITEventListener.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITEventListener.h Tue Jan 15 11:16:16 2013
@@ -26,6 +26,7 @@
 class MachineFunction;
 class OProfileWrapper;
 class IntelJITEventsWrapper;
+class ObjectImage;
 
 /// JITEvent_EmittedFunctionDetails - Helper struct for containing information
 /// about a generated machine code function.
@@ -76,6 +77,20 @@
   /// matching NotifyFreeingMachineCode call.
   virtual void NotifyFreeingMachineCode(void *) {}
 
+  /// NotifyObjectEmitted - Called after an object has been successfully
+  /// emitted to memory.  NotifyFunctionEmitted will not be called for
+  /// individual functions in the object.
+  ///
+  /// ELF-specific information
+  /// The ObjectImage contains the generated object image
+  /// with section headers updated to reflect the address at which sections
+  /// were loaded and with relocations performed in-place on debug sections.
+  virtual void NotifyObjectEmitted(const ObjectImage &Obj) {}
+
+  /// NotifyFreeingObject - Called just before the memory associated with
+  /// a previously emitted object is released.
+  virtual void NotifyFreeingObject(const ObjectImage &Obj) {}
+
 #if LLVM_USE_INTEL_JITEVENTS
   // Construct an IntelJITEventListener
   static JITEventListener *createIntelJITEventListener();

Modified: llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITMemoryManager.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITMemoryManager.h?rev=172541&r1=172540&r2=172541&view=diff
==============================================================================
--- llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITMemoryManager.h (original)
+++ llvm/branches/AMDILBackend/include/llvm/ExecutionEngine/JITMemoryManager.h Tue Jan 15 11:16:16 2013
@@ -10,7 +10,9 @@
 #ifndef LLVM_EXECUTION_ENGINE_JIT_MEMMANAGER_H
 #define LLVM_EXECUTION_ENGINE_JIT_MEMMANAGER_H
 
+#include "llvm/ExecutionEngine/RuntimeDyld.h"
 #include "llvm/Support/DataTypes.h"
+
 #include <string>
 
 namespace llvm {
@@ -22,7 +24,7 @@
 /// memory for the code generated by the JIT.  This can be reimplemented by
 /// clients that have a strong desire to control how the layout of JIT'd memory
 /// works.
-class JITMemoryManager {
+class JITMemoryManager : public RTDyldMemoryManager {
 protected:
   bool HasGOT;
 
@@ -47,17 +49,6 @@
   /// debugging, and may be turned on by default in debug mode.
   virtual void setPoisonMemory(bool poison) = 0;
 
-  /// getPointerToNamedFunction - This method returns the address of the
-  /// specified function. As such it is only useful for resolving library
-  /// symbols, not code generated symbols.
-  ///
-  /// If AbortOnFailure is false and no function with the given name is
-  /// found, this function silently returns a null pointer. Otherwise,
-  /// it prints a message to stderr and aborts.
-  ///
-  virtual void *getPointerToNamedFunction(const std::string &Name,
-                                          bool AbortOnFailure = true) = 0;
-
   //===--------------------------------------------------------------------===//
   // Global Offset Table Management
   //===--------------------------------------------------------------------===//
@@ -112,22 +103,6 @@
   virtual void endFunctionBody(const Function *F, uint8_t *FunctionStart,
                                uint8_t *FunctionEnd) = 0;
 
-  /// allocateCodeSection - Allocate a memory block of (at least) the given
-  /// size suitable for executable code. The SectionID is a unique identifier
-  /// assigned by the JIT and passed through to the memory manager for
-  /// the instance class to use if it needs to communicate to the JIT about
-  /// a given section after the fact.
-  virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
-                                       unsigned SectionID) = 0;
-
-  /// allocateDataSection - Allocate a memory block of (at least) the given
-  /// size suitable for data. The SectionID is a unique identifier
-  /// assigned by the JIT and passed through to the memory manager for
-  /// the instance class to use if it needs to communicate to the JIT about
-  /// a given section after the fact.
-  virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
-                                       unsigned SectionID) = 0;
-
   /// allocateSpace - Allocate a memory block of the given size.  This method
   /// cannot be called between calls to startFunctionBody and endFunctionBody.
   virtual uint8_t *allocateSpace(intptr_t Size, unsigned Alignment) = 0;





More information about the llvm-branch-commits mailing list